left join,etc.
Marc
- php
ich hab mich über das thema join schlau gemacht und hab es dank diesem tut auch geschafft, 2 tabellen richtig zu verknüpfen. aber bei 3 hört mein erfolg leider auf..
ich hab folgende tabellen-struktur:
****************************************************************
auftrag:
id | titel | datum
+----------------------------------+
1 | test | 2005-12-20
+----------------------------------+
personal:
id | name | vorname
+------------------------------------+
1 | muster | felix
+------------------------------------+
daten:
id | pers_id | auftrag_id | eventdatum
+----------------------------------------------------+
1 | 1 | 1 | 2005-12-21
*****************************************************************
es sollen nun
a) alles personal ausgegeben werden
b) rechts davon der auftrags-titel,sofern in der tabelle "daten" ein entsprechender datensatz vorhanden ist. wenn nicht ist neben dieser person einfach ein leeres feld.
bei 2 tabellen hab ich das benutzt:
$pers_query = mysql_query("SELECT pers_name, pers_vorname, sc_dispo_personal.id, eventdatum
FROM sc_dispo_personal LEFT JOIN sc_dispo_daten
ON sc_dispo_daten.pers_id = sc_dispo_personal.id");
aber wie muss mein query aussehen, wenn ich die 3 tabellen verknüpfen möchte?
wäre für einen tipp sehr dankbar.
Hallo Marc,
ich hab mich über das thema join schlau gemacht und hab es dank diesem tut auch geschafft, 2 tabellen richtig zu verknüpfen. aber bei 3 hört mein erfolg leider auf..
ich vermute mal, dass Du das aus diesem Thread bist. Dort ist ein Posting von Tim verlinkt, das auf die Vorschau der geplanten neuen Feature-Artikel hinweist. Mein Artikel befasst sich unter anderem mit der Verknüpfung mehrer Tabellen.
ich hab folgende tabellen-struktur:
****************************************************************
auftrag:id | titel | datum
+----------------------------------+
1 | test | 2005-12-20
+----------------------------------+personal:
id | name | vorname
+------------------------------------+
1 | muster | felix
+------------------------------------+daten:
id | pers_id | auftrag_id | eventdatum
+----------------------------------------------------+
1 | 1 | 1 | 2005-12-21
*****************************************************************es sollen nun
a) alles personal ausgegeben werden
b) rechts davon der auftrags-titel,sofern in der tabelle "daten" ein entsprechender datensatz vorhanden ist. wenn nicht ist neben dieser person einfach ein leeres feld.
Schau mal: Den Titel zu den Daten bekommst Du über einen INNER JOIN von 'auftrag' und 'daten'. Somit kommst Du auf
personal LEFT JOIN (auftrag INNER JOIN daten)
Beachte die Klammersetzung, den Rest solltest Du schon hinkriegen. Falls Du irgendwo hängenbleibst, frag einfach nochmals nach.
Freundliche Grüße
Vinzenz
Hi Vinzenz,
juchu, haben wir den Mehrfachjoin auch gut an den Mann gebracht, das wird noch was hier *g*.
MfG
Rouven
habs glaub geschafft...
$pers_query = mysql_query("SELECT pers_name, pers_vorname, titel,sc_dispo_personal.id, eventdatum FROM sc_dispo_personal
LEFT JOIN sc_dispo_daten ON sc_dispo_daten.pers_id = sc_dispo_personal.id
LEFT JOIN sc_dispo_auftrag ON sc_dispo_auftrag.id = sc_dispo_daten.auftrag_id
");
2x left join scheint zu funktionieren...
hallo vinzenz
Deine vermutung ist richtig. danke für Dein echo.
ich hab's noch nicht raus:
bei 2 hab ich's so hingekriegt:
$pers_query = mysql_query("SELECT pers_name, pers_vorname, sc_dispo_personal.id, eventdatum
FROM sc_dispo_personal LEFT JOIN sc_dispo_daten
ON sc_dispo_daten.pers_id = sc_dispo_personal.id");
so krieg ich die namen und das eventdatum. wenn ich das mit der klammer nach LEFT JOIN einsetze erhalte ich eine mysql-fehlermeldung.