PDA

View Full Version : Sql Subselect



woki
20-03-06, 12:53
Hallo Forum,
ist es bei SQL/400 möglich in einer Where-Klausel mehrere Felder mit dem Ergebnis einer Subselect-Abfrage zu vergleichen?

Bei ORACLE sieht das dann so aus:


select *
from xyz
where (feld1, feld2) in (select id1, id2
from abc
where id1 < 10 and id2 > 1000)

Fuerchau
20-03-06, 13:02
Nur über CONCAT, da als Ergebnis nur 1 Feld vorhanden sein darf:

select *
from xyz
where (feld1 concat feld2) in (select id1 concat id2
from abc
where id1 < 10 and id2 > 1000)

Ggf. ist eine Typanpassung als CHAR(xxx) erforderlich, bei numerischen Werten kann man auch z.B. "feld1 * 1000 + Feld2" wenn Feld2 3-stellig ist, verwenden.

woki
20-03-06, 13:10
Das habe ich mir auch schon überlegt, ist zwar unschön, aber was solls...
Ich habe gehofft, daß es eine andere Lösung gibt.
Vielen Dank für die Antwort!

Fuerchau
20-03-06, 13:14
Die Alternative ist da doch ein inner join:

select xyz.*
from xyz inner join abc on feld1=id1 and feld2=id2
where id1 < 10 and id2 > 1000