[ot] Doppelter LEFT JOIN

08/09/2010 - 16:47 von Torge Ismer | Report spam
Hallo,

in meinem derzeitigen Projekt hànge ich an einem Problem, das nicht direkt
Delphi sondern SQL verschuldet. Aber hier lesen ja eine Menge kluger Leute
mit. Vielleicht hat jemand eine Idee.

Ich habe drei Tabellen

tbl_Einrichtung: tbl_Kreis
tbl_Einrichtungsart
E_ID A_ID K_ID u.v.a... K_ID KreisName A_ID
Art
1 1 2 1 Kreis1
1 Art1
2 1 3 2 Kreis2
2 Art2
3 2 2 3 Kreis3
3 Art3
4 3 2
etc.

Für eine statistische Auswertung möchte ich jetzt alle Einrichtungen
gruppiert nach Kreisen (1.Ebene) und Einrichtungsarten (2.Ebene) zàhlen.

Mein Ansatz war:
SELECT k.KreisName, a.Art, COUNT(e.e_id) AS Anzahl
FROM tbl_Einrichtung e
LEFT JOIN tbl_Kreis k ON e.k_id = k.k_id
LEFT JOIN tbl_Einrichtungsart a ON e.a_id=a.a_id
GROUP BY k.kreisname, a.Art
ORDER BY k.kreisname, a.Art

Ergebnis:

KreisName Art Anzahl
Kreis1 NULL 0
Kreis2 Art1 1
Kreis2 Art2 1
Kreis2 Art3 1
Kreis3 Art1 1

Das entspricht soweit wohl den Regeln für SQL-Joins, da sowohl alle Kreise,
wie alle Arten enthalten sind. Ich möchte aber ein Ergebnis, in dem sowohl
Kreise wie auch Arten vollstàndig, nach Ebenen gruppiert aufgezàhlt werden.
Also:

KreisName Art Anzahl
Kreis1 Art1 0
Kreis1 Art2 0
Kreis1 Art3 0
Kreis2 Art1 1
Kreis2 Art2 1
Kreis2 Art3 1
Kreis3 Art1 1
Kreis3 Art2 0
Kreis3 Art3 0

Hat jemand eine Idee, wie ich das hinbekomme?

Grüße
Torge

Umgebung: Delphi 2007, MS SQL Server 2005
 

Lesen sie die antworten

#1 Torge Ismer
08/09/2010 - 17:07 | Warnen spam
Mist! Jetzt hat es meine Tabellenstruktur zerlegt. Ich hoffe, ihr könnt es
trotzdem lesen. Trotzdem nochmal sauberer:





Ich habe drei Tabellen

tbl_Einrichtung:
E_ID A_ID K_ID u.v.a...
-
1 1 2
2 1 3
3 2 2
4 3 2
etc.

tbl_Kreis
K_ID KreisName
-
1 Kreis1
2 Kreis2
3 Kreis3


tbl_Einrichtungsart
A_ID Art
1 Art1
2 Art2
3 Art3

Ähnliche fragen