Count Ergebniss stimmt nicht ganz

Ostseebengel74

Benutzer
Beiträge
11
Anhang anzeigen 1718 Die Abfrage wie viele Standorte der Auftraggeber hat funktioniert nur beding.

Id 1 hat wirklich 3 Einträge
Id 2 hat wirklich 2 Einträge
aber der Rest hat Keine Einträge

wie kann die Abfrage dahingehend ändern das aus der 1 eine 0 oder nichts wird.

Abei nochmal die SQL Abfrage

SELECT Auftraggeber.Id, COUNT(Auftraggeber.Id) AS Standorte, Auftraggeber.Auftraggeber, Auftraggeber.Info1, Auftraggeber.Info2, Auftraggeber.Info3, Auftraggeber.Strasse, Auftraggeber.PLZ, Auftraggeber.Ort, Auftraggeber.Zusatz1, Auftraggeber.Zusatz2, Auftraggeber.Zusatz3, Auftraggeber.Kommentar
FROM Auftraggeber LEFT OUTER JOIN Kunden ON Kunden.IdFK1 = Auftraggeber.Id
GROUP BY Auftraggeber.Id, Kunden.IdFK1, Auftraggeber.Auftraggeber, Auftraggeber.Info1, Auftraggeber.Info2, Auftraggeber.Info3, Auftraggeber.Strasse, Auftraggeber.PLZ, Auftraggeber.Ort, Auftraggeber.Zusatz1, Auftraggeber.Zusatz2, Auftraggeber.Zusatz3, Auftraggeber.Kommentar
 

Anhänge

  • Unbenannt.png
    Unbenannt.png
    49,9 KB · Aufrufe: 5
Werbung:
Ich habe eine Tabelle (Auftraggeber) und Eine Tabelle (Kunden)

In der Tabelle (Kunden) IdFK1 speicher ich die ID des Auftraggebers ab

in meiner DataGridView gibt es eine Spalte Standorte

in dieser reihe taucht die Anzahl der Kunden des Auftraggebers auf


Das ganze funktioniert wie im Bild zu sehen... momentan hat Auftraggeber 1 Drei Kunden und Auftraggeber 2 Zwei Kunden... Alle anderen haben noch KEINE Kunden. Trozdem wird mir unter Standorte eine 1 angezeigt. Ich möchte aber das da eine Null oder Nichts auftaucht wenn der Auftraggeber noch keine Kunden hat.


Jetzt klarer???


Dankeschön
 
siehe Antwort von @castorp

Code:
edb=# create table auftraggeber(id int primary key, name text);
CREATE TABLE
edb=*# create table kunden (id int primary key, auftraggeber int references auftraggeber, name text);
CREATE TABLE
edb=*# insert into auftraggeber values (1,'auftraggeber 1');
INSERT 0 1
edb=*# insert into auftraggeber values (2,'auftraggeber 2');
INSERT 0 1
edb=*# insert into auftraggeber values (3,'auftraggeber 3');
INSERT 0 1
edb=*# insert into kunden values (1,1,'kunde1');
INSERT 0 1
edb=*# insert into kunden values (2,1,'kunde2');
INSERT 0 1
edb=*# insert into kunden values (3,2,'kunde3');
INSERT 0 1
edb=*# select * from auftraggeber ;
 id |      name     
----+----------------
  1 | auftraggeber 1
  2 | auftraggeber 2
  3 | auftraggeber 3
(3 rows)

edb=*# select * from kunden ;
 id | auftraggeber |  name  
----+--------------+--------
  1 |            1 | kunde1
  2 |            1 | kunde2
  3 |            2 | kunde3
(3 rows)

edb=*# select a.name, count(k.id) from auftraggeber a left join kunden k on a.id=k.auftraggeber group by a.name;
      name      | count
----------------+-------
 auftraggeber 2 |     1
 auftraggeber 3 |     0
 auftraggeber 1 |     2
(3 rows)

edb=*# select a.name, count(k.id) from auftraggeber a left join kunden k on a.id=k.auftraggeber group by a.name order by a.name;
      name      | count
----------------+-------
 auftraggeber 1 |     2
 auftraggeber 2 |     1
 auftraggeber 3 |     0
(3 rows)

edb=*#
 
Werbung:
Moin


habe...
SELECT Auftraggeber.Id, COUNT(Auftraggeber.Id)

in ...
SELECT Auftraggeber.Id, COUNT(Kunden.IdFK1)

geändert und es geht...

Danke für die Anstöße.. hat mir geholfen


@akretschmer
Bitte sei mir nicht böse, aber wir zwei werden uns nicht grün... Was vollkommen Ok ist... Sollte ich in Zukunft Fragen haben, würde ich gern auf Antworten deinerseits verzichten.


Dankeschön
 
Zurück
Oben