JOIN ? Aber welchen ?

MySQL, PostgreSQL, SQLite
ice
Posts: 140
Joined: 2002-08-21 13:08

JOIN ? Aber welchen ?

Post by ice » 2003-02-25 12:19

Mal ne Frage zur SQLsyntax direkt. Hier gibts doch bestimmt auch Leute, die das drauf haben.

Ich versuche krampfhaft eine Abfrage zu schreiben, die mir 6 Tabellen zu einer Ergebnismenge macht, wobei nicht garantiert ist, dass die Ausgangstabelle vollständig gefüllt ist, so dass keine einfach AND zur Anwendung kommen kann.

Folgende habe ich versucht:

Code: Select all

$result = mysql_query("select * from 
" . $tblpref . "war_war as W, " . $tblpref . "war_squad as S,
" . $tblpref . "war_maps as M, " . $tblpref . "war_com as C, 
" . $tblpref . "war_server as R, " . $tblpref . "war_art as A 
where 
W.id*='$id' AND 
S.id*=W.war_squad AND 
M.id*=W.war_map_1 AND 
M.id*=W.war_map_2 AND 
M.id*=W.war_map_3 AND 
M.id*=W.war_map_4 AND 
C.id*=W.war_com AND 
R.id*=W.war_server AND 
A.id*=W.war_art", $dbi);
Sollte eigentlich ein LEFT JOIN nach alter Syntax sein. Geht aber nicht. Fehler gibts nicht und in der Ergebnismenge erscheint nur die entsprechende ID nicht jedoch die dazugehörigen Daten der referenzierten Tabelle.

Code: Select all

/*	$result = mysql_query("select * from 
" . $tblpref . "war_war as W, " . $tblpref . "war_squad as S, 
" . $tblpref . "war_maps as M, " . $tblpref . "war_com as C, 
" . $tblpref . "war_server as R, " . $tblpref . "war_art as A 
			LEFT JOIN W ON W.id='$id'
			LEFT JOIN S ON S.id=W.war_squad
			LEFT JOIN M ON M.id=W.war_map_1
			LEFT JOIN M ON M.id=W.war_map_2
			LEFT JOIN C ON C.id=W.war_com
			, $dbi);
*/
Der geht garnicht. Es kommt keine Antwort.

jtb
Posts: 599
Joined: 2002-08-18 16:41
Location: Darmstadt

Re: JOIN ? Aber welchen ?

Post by jtb » 2003-02-25 19:10

falls ich richtig interpretiere, was du machen willst, brauchst einen FULL-JOIN

ice
Posts: 140
Joined: 2002-08-21 13:08

Re: JOIN ? Aber welchen ?

Post by ice » 2003-03-11 14:46

Muh, was das denn?

Vielleicht versuche ich das nochmal deutlicher zu machen, was ich erreichen will.

Ich habe eine Haupttabelle, die ich abfrage. Dort stehen in einigen Feldern Fremdschlüssel, deren zugehörigen Werte ich gleich aus den referenzierten Tabellen haben möchte. Entscheidender Punkt ist hier, dass nicht alle Felder der Haupttabelle auch wirklich Werte, bzw. Fremdschlüssel enthalten. In einigen steht halt nix drin.

Wären alle Felder gefüllt wäre die Abfrage leicht wie oben beschrieben zu lösen, da eine UND Verknüpfung ja erfüllt wäre. Nur so ist es leider nicht.

Wenn ich das richtig verstanden habe auf http://www.mysql.com brauche ich einen OUTER- oder LEFT JOIN. Nur kann ich den eben nicht formulieren.