PDA

View Full Version : SQL Select into



alexander may
30-03-05, 12:27
Hallo allerseits,

habe folgendes Problem:
Ich möchte eine Zieldatei(Z1) mit Informationen aus verschiedenen Quelldateien bestücken. Alles in allem 5 Verschiedene Quelldateien(Q1-Q5).
Habe mir also ein
INSERT INTO Z1 ( Spalte1, Spalte2, Spalte3, usw) SELECT (Spalte1, Spalte2, Spalte3 usw) FROM Q1, Q2, Q3, Q4, Q5 WHERE (Q1Spalte1 = Q2Spalte1, Q1Spalte2 = Q3Spalte2,
Q3Spalte3=Q4Spalte3, Q3Spalte4 = Q5Spalte4)
zusammengebaut.
Denke, das Passt auch soweit. Relationen zwischen Q1, Q2 sind immer vorhanden. Passender Satz in Q3 nicht immer.
Wenn jetzt die Abfrage läuft, kommen (korrekterweise) nur Sätze mit Vorhandenem Satz in Q3, da ja dann nur der rest der WHERE Bedingungen zutrifft.
Ich will aber in meiner Zieldatei Alle Sätze aus Q1,Q2 haben, auch wenn Q3 nicht vorhanden, und somit Spalten in Z1, welche aus Q3-Q5 resultieren, leer wären.
Was kann/muss ich da tun?
Bin um jede Hilfe dankbar....

Gruss

Alexander May

fred_hanau
30-03-05, 12:43
from ...
left outer join Q3 on ...

Gruß aus Hanau

Fuerchau
30-03-05, 13:51
Dabei ist dann zu bedenken, dass auch NULL-Werte entstehen können. Wenn das Zielfeld keine NULL-Werte erlaubt, sind diese natürlich zu ersetzen da der SQL sonst abbricht !

insert into ...
select ..., coalesce(q3.charfeld, ' '), coalesce(q3.numfeld, 0), ...
from q1, q2
left join q3 on q1.key=q3.key and ...
left join q4 on ...
left join q5 on ...
where ...

B.Hauser
30-03-05, 13:55
from ...
left outer join Q3 on ...

Gruß aus Hanau

Hier noch ein bisschen detaillierter:


INSERT INTO Z1 ( Spalte1, Spalte2, Spalte3, usw)
SELECT (Spalte1, Spalte2, Spalte3 usw)
FROM Q1 inner join Q2 on Q1Spalte1 = Q2Spalte2
left outer join Q3 on Q1Spalte2 = Q3Spalte2
inner join Q4 on Q3Spalte3 = Q4Spalte4
inner join Q5 on Q3Spalte4 = Q5Spalte5

alexander may
30-03-05, 14:56
Danke Allerseits für die schnelle Hilfe,
Hat funktioniert.
Grüsse

Alexander May