pl: Union Select mit unterschiedlichen Where-Klauseln?

Beitrag lesen

Hallo,

ich möchte gerne zwei Tabellen in eine Ergebnisliste packen. Tabelle 1 enthält die Felder vorname, nachname, pnr und kst. Tabelle 2 enthält die Felder vorname, nachame, kdnr, pnr, land.

Normal ist das nicht ;)

Kann ich mit einer Abfrage aus Tabelle 1 nur die Einträge wo kst = '10001' ist und aus Tabelle 2 wo land = 'de' bekommen?

Freilich doch.

Ich hatte es mit Union select versucht, aber da erhalte ich die Fehlermeldung, dass das Feld land unbekannt ist.

select vorname, nachname from tabelle1 where kst = '10001' union select vorname, nachname from tabelle2 where land = 'de'

Wenn Du mehrere Tabellen joinst, musst Du auch die Felnamen qualifizieren insbesondere dann, wenn in verschiedenen Tabellen gleiche Feldnamen stehen. Als Schlüssel für den join würde ich using(pnr) verwenden auf den ersten Blick.

select 
a.vorname    as firstname,
a.nachname   as lastname,
from
table1 a
join 
table2 b using(pnr)
where a.kst = '1001'
and
b.land = "de"

Dein DB Design ist überarbeitungsbedürftig!

mfg