QUERY:
select * from table1 a union select * from table1 a, table2 b where a.id=b.pid order by a.dat
[/code]Es gibt also diese zwei Tabellen. In table1 a sind etliche Einträge, zu einigen, aber eben nicht allen gibt es in table2 b, verbunden über den selben Wert in a.id und b.pid.
Ausgegeben werden soll eine Liste aller Einträge in table1 a, da wo zusätzlich Daten in table2 b existieren, sollen sie mit ausgegeben werden. Siehe Beispielsausgabe.
Kann man das in einem Query (so wie angegeben kann das natürlich nicht funktionieren, weil die Tables ungleich viele Spalten haben) lösen (mit union?)? Oder muss ich mir ne Schleife über die table1 machen und für jeden Eintrag ein separates select auf table2?
Warum machst Du das ganze nicht mit LEFT JOIN? Hab das bis eben zwar auch noch nicht gemacht, aber mal eben was probiert, und es funktioniert.
[php]SELECT * FROM a LEFT JOIN b ON id = pid
[/php]Gruß thuemmy
Wenn Du eine Antwort auf die Frage willst, dann müsste sie lauten: „Weil ich keine Ahnung habe, was ‚left join‘ ist“ Aber ich habs vorhin beim Schnüffeln in der Doku gefunden, ich schaus mir mal an.
Besten Dank einstweilen, wenn es nicht klappt, komm ich wieder
Also von left join habe ich bis eben auch keine Ahnung gehabt, zumindest nicht davon, wie man das anwendet. Habe mich dann schlau gemacht, 1. um Dir zu helfen und 2. damit ich was dazu lerne (was ja wichtiger ist, als zu helfen )
Ich habe das hier auf meinem xampp getestet und es funktioniert. Wenn in Tabelle b keine Sätze sind, dann bekommst Du in den entsprechenden Feldern NULL zurück.
Ja, klappt ausgezeichnet. Und ich bin zu Tränen gerührt, dass Du das extra für mich gemacht hast…wahrscheinlich nur deswegen, weil wir alten Säcke zusammenhalten müssen, was?
Nein, kann er nicht. Mit dem was Du schreibst, würde er nur Sätze aus Tabelle a bekommen, wenn auch Sätze in Tabelle b sind. Und dies ist nicht immer gegeben.