Order bei Count über 2 Tabellen
Axel Hoogestraat
- datenbank
Hallo,
ich habe mal wieder ein SQL Problem. Ich habe 2 Tabellen Kunden und Projekte. In meiner Intranetanwendung gibt es eine Kundenliste.
Diese soll unter Anderem nach der Anzahl der Projekte sortiert werden können.
In der Tabelle Projekte steht die ID des Kunden, zu dem das Projekt gehört.
Bei meiner ersten Möglichkeit, bekomme ich die Kunden, die noch KEINE Proejkte haben nicht mit angezeigt:
SELECT t2.Kdn_id, COUNT(t1.projekt_id) FROM [dbo].[Kunden] as t2, [dbo].[Projekte] as t1 WHERE t1.Kdn_id=t2.Kdn_id GROUP BY t2.Kdn_id ORDER BY COUNT(t1.projekt_id) $dir
(in $dir steht halt ASC oder DESC)
t1.Kdn_id=t2.Kdn_id <- Das ist hierbei das Problem
Bei meiner zweiten Möglichkeit stehen bei jedem Kunden immer die Anzahl ALLER Projekte, also er ordnet die nicht zu.
SELECT t2.Kdn_id, COUNT(t1.projekt_id) FROM [dbo].[Kunden] as t2, [dbo].[Projekte] as t1 GROUP BY t2.Kdn_id ORDER BY COUNT(t1.projekt_id) $dir
Ist mir auch klar warum.
Nur wie muss jetzt die Abfrage aussehen, damit das korrekt funktioniert. Hat jemand eine Idee ?
Vielen Dank im Voraus
Schöne Grüße
Axel
Hi,
Bei meiner ersten Möglichkeit, bekomme ich die Kunden, die noch KEINE Proejkte haben nicht mit angezeigt:
diese Abfrage ist im Prinzip richtig. Du musst den Join nur noch zu einem Outer Join machen; konsultiere diesbezüglich die Dokumentation Deines DBMS.
Cheatah
Hallo,
diese Abfrage ist im Prinzip richtig. Du musst den Join nur noch
zu einem Outer Join machen; konsultiere diesbezüglich die
vielen Dank. Der Tip war (mal wieder :-)) goldrichtig.
Des Rätsels Lösung:
SELECT t2.Kdn_id FROM [dbo].[Kunden] as t2 LEFT OUTER JOIN [dbo].[Projekte] as t1 ON t2.Kdn_id=t1.Kdn_id GROUP BY t2.Kdn_id ORDER BY COUNT(t1.projekt_id) $dir"
Vielen Dank nochmal
Schöne Grüße
Axel