MySQL zwei Tabellen gleichzeitig abfragen

Farnsworth

Neu NewYorker
ID: 96114
L
23 April 2009
378
26
Hallo,

ich möchte zwei Tabellen aus meiner Datenbank gleichzeitig abfragen.

Zurzeit werden die Informationen der beiden Tabellen auf zwei unterschiedlichen Seiten angezeigt. diese sollen nun auf einer Seite kombiniert angezeigt werden.

diese beiden Abfragen möchte ich mit einander kombinieren, weiß aber nicht wie ich das anstellen soll. Ich habe gelesen, dass das mit dem "Join" Befehl gehen soll. Steige da aber nicht wirklich durch.
Code:
$query="select * from Chefs_nd where nr=$nr and geschlecht='m'";
$query="select * from Mitarbeiter_nd where chef1=$nr or chef2=$nr or chef3=$nr or chef4=$nr order by name,vorname";
Könnte mir da jemand behilflich sein?
 
als erstes brauchst du primärschlüssel in beiden Tabellen diese sind erstens numerisch (integer) und eindeutig ( unique) und am besten fortlaufend und zudem brauchst du einen fremdschlüssel in mindestens 1 dieser Tabellen, je nachdem welche art relation du erschaffen willst.

Da es immer merere Mitarbeiter zu einem Chef gibt ist hier die n zu 1 relation bzw 1:n gefordert.
anhand deiner Tabellen ist es nun so dass du du einen Fremdschlüssel (wir nennen in ChefId)in der Mitarbeitertabelle definierst der dem Datentyp des Primärschlüssels der ChefTabelle entspricht.
Praktisch gesehen weist du einen oder mehrere Mitarbeiter den chef zu.

bsp:

select * from Chefs_nd inner join Mitarbeiter_nd on Chefs_nd.id = Mitarbeiter_nd.ChefId
where [deine bedingung, welche du auch immer haben willst]


Sinnvoller wäre es ein wenig anders zu machen, da jeder Mitarbeiter als auch Chef jeweils Menschen/Personen sind und diese sollten alle in eine Tabelle rein.

hierbei wäre es ( beispiel )
Tabellename :
Person
Felder :
Id , integer, identity(1,1) primary key,
name char(255),
surname char(255),
birthday datetime


dann willst du eine hierarchische struktur aufbauen :

dies könntest du wie folgt machen in dem du eine weitere hierarchietabelle erstellst wo du personen anderen personen unterordnest. bsp:

Tabellename:
Hierarchie
Felder :
id integer, identity(1,1) primary key,
ChefPersonId integer,
PersonId Integer ( nullable)

in dem fall kannst du dann einem Chef , weitere Personen unterordnen die dann wieder Chef von anderen Personen sind. Damit kannst du eine theroretisch endlose hierarchie aufbauen,
das einzige worauf du hierbei besonders achten musst ist dass du keinen Zyklen machst.
Sprich : Person A ist chef von Person B der widerrum Chef von Person C ist und C ist Chef von Person A ( dies ist Verboten!!! und darum musst du dich kümmern -evtl. mit einer triggerlösung oder einem Constraint )
Darüberhinaus musst du die Felder (ChefPersonId, PersonId) der Hierarchietabelle als Fremdschlüsseldeklarieren so dass diese auf die Tabelle Person aufs Feld Id verweisen.

Soo ich hau mich nun aufs ohr... gn8
und ja auf REchtschreibtfehler leg ich grade keinen besonders großen wert...^^