E
Efchen
Guest
Hallo,
ich habe Euch mal ein kleines Beispiel konstruiert.
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?
Danke vielmals,
-Efchen
ich habe Euch mal ein kleines Beispiel konstruiert.
Code:
STRUKTUR:
table1 a
id integer
name varchar(16)
dat date
num float
table2 b
pid integer
bdat date
tnum float
INHALT:
a.id 1
a.name Eins
a.dat 2008-01-01
a.num 100.0
a.id 2
a.name Zwei
a.dat 2008-01-15
a.num 200.0
b.pid 2
b.bdat 2008-01-16
b.tnum 199.99
AUSGABE:
+------------+------------+-------+--------+--------+
| a.dat | b.bdat | a.num | b.tnum | a.name |
+------------+------------+-------+--------+--------+
| 2008-01-01 | | 100.0 | | Eins |
| 2008-01-15 | 2008-01-16 | 200.0 | 199.99 | Zwei |
+------------+------------+-------+--------+--------+
QUERY:
select * from table1 a union select * from table1 a, table2 b where a.id=b.pid order by a.dat
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?
Danke vielmals,
-Efchen