DB2: Left join mit subselects

si031006

Mitglied
Hi!

Ist jetzt kein allzu drigendes Problem, da die Lösung einfach anders implementiert wurde, aber mich würde trotzdem interessieren was der Grund hierfür ist:

Ich mache normale selects. Eines liefert etwas, das andere hat keine Ergebnisse.

Erstes Select:

select
s1.c,s1.d, s1.E
from
snums as s1
where
s1.verarbeitungs_kz='0' and s1.d='1' and s1.mand_id='XXX'


Zweites Select:
select
s2.c,s2.d, s2.E
from
snums as s2
where
s2.verarbeitungs_kz='0' and s2.E='1' and s2.mand_id='XXX'

Für sich genommen funktionieren die einzelnen SQLs. Verbinde ich die zwei über ein UNION klappts auch wunderbar.


Jetzt würd ich gerne das ganze kombinieren mittels left join, also sprich folgender Code:


select *

FROM

(
select
s1.c,s1.d, s1.E
from
snums as s1
where
s1.verarbeitungs_kz='0' and s1.d='1' and s1.mand_id='XXX'
)

LEFT JOIN

(
select
s2.c,s2.d, s2.E
from
snums as s2
where
s2.verarbeitungs_kz='0' and s2.E='1' and s2.mand_id='XXX'
)

ON
s1.c=s2.c


Hierbei kommt allerdings eine Fehlermeldung, genau:
An unexpected token "" was found following ")". Expected tokens may include: "AS".


Weiss jemand wie ich diese Abfrage trotzdem zum Laufen kriegen könnte?
 
Ich hab zwar keine Ahnung von DB2, jedoch kenne ich die Fehlemedung von anderen Datenbanken. Du musst dem Subselect ein Alias geben (mit AS).

Code:
SELECT 
    t1.*,
    t2.*
FROM
    (SELECT
        s1.c,s1.d, s1.E
    FROM
        snums AS s1
    WHERE
        s1.verarbeitungs_kz='0' 
        AND s1.d='1' 
        AND s1.mand_id='XXX'
    ) AS t1
LEFT JOIN
    (SELECT
        s2.c,s2.d, s2.E
    FROM
        snums AS s2
    WHERE
        s2.verarbeitungs_kz='0' 
        AND s2.E='1' 
        AND s2.mand_id='XXX'
    ) AS t2
    ON t1.c=t2.c
 
Zurück