Ilja: JOIN über mehrere Tabellen

Beitrag lesen

yo,

Wäre das so richtig für alle 3 Nebentabellen?

nein, so geht es nicht. zum einen macht es keinen sinn, die spalte t1.herstellernr auszugaben, wenn du weiter unten in der where klausel dort nach nur null werten abfragst. zum anderen nehme ich an, dass du mit neben und haupttabelle meinst, dass die nebenschlüssel einen fremdschlüssel (herstellernr) der haupttabelle enthalten, du joinst aber unter anderem die nebentabelle t2 mit anderen nebentabellen.

das beste ist wohl, du nimmst die abfrage aus meinem ersten beispiel (die OUTER klausel kann man ruhig weglassen, also LEFT JOIN reicht vollkommen aus) und machst das gleiche für alle andere "nebentabellen" und verbindest die drei sql anweisung mit UNION ALL, wobei zu beachten ist, dass die spaltenanzahl nach der select klausel gleich sein muss.

SELECT t2.spalte1, t2.spalte2
FROM nebentabelle t2
LEFT JOIN haupttabelle t1 ON t1.herstellernr = t2.herstellernr
WHERE t1.herstellernr IS NULL
UNION ALL
SELECT t3.spalte1, t3.spalte2
FROM nebentabelle t3
LEFT JOIN haupttabelle t1 ON t1.herstellernr = t3.herstellernr
WHERE t1.herstellernr IS NULL
UNION ALL
SELECT t4.spalte1, t4.spalte2
FROM nebentabelle t4
LEFT JOIN haupttabelle t1 ON t1.herstellernr = t4.herstellernr
WHERE t1.herstellernr IS NULL

Ilja