Access-o-Mania

Access-Forum (Deutsch/German) => Tabelle/Abfrage => Thema gestartet von: henfoni am August 02, 2012, 10:12:05

Titel: Count-Funktion zählt IDs doppelt?
Beitrag von: henfoni am August 02, 2012, 10:12:05
Moin, ich habe ein Sache, die ich mir nicht erklären kann. Ich hab eine Abfrage, die 3 Tabellen mit einbezieht. (T1,T2,T3).

SELECT Count(T1.id) AS AnzahlvonT1
FROM T1 INNER JOIN (T2 INNER JOIN T3 ON T2.id = T3.T2_id) ON T1.id = T2.T1_id
WHERE (((T1.sys_eing_dat) Between #1/1/2012# And #1/3/2012#) AND ((T3.Rechnungsnr)<>889));

Nun bekomme ich 2 verschiedene Ergebnisse, wenn ich mich mit Count arbeite, oder mir alle IDs ohne Count ausgeben lassen, die Anzahl also so nachgucke. Den Fehler habe ich auch schon gefunden, wenn ich mit Count abfrage, dann zählt er alle Tupel (T1.id,T2.id,T3.id) und somit doppelte T1.ids.
Wenn ich ohne Count arbeite, dann zählt er auch wirklich nur die IDs der T1. Ist das so gewollt? Die Count-Funktion erscheint mir dann in dem Zusammenhang ziemlich sinnlos :/

Gruß
Titel: Re: Count-Funktion zählt IDs doppelt?
Beitrag von: DF6GL am August 02, 2012, 11:48:53
Hallo,

schreib mal:

SELECT Count(*) AS AnzahlvonT1 ...
Titel: Re: Count-Funktion zählt IDs doppelt?
Beitrag von: henfoni am August 02, 2012, 12:40:47
Hm kommt noch immer die falsche Anzahl raus
Titel: Re: Count-Funktion zählt IDs doppelt?
Beitrag von: ebs17 am August 02, 2012, 12:41:40
ZitatWenn ich ohne Count arbeite, dann zählt er auch wirklich nur die IDs der T1. Ist das so gewollt? Die Count-Funktion erscheint mir dann in dem Zusammenhang ziemlich sinnlos :/

In meiner bescheidenen Vorstellung wird ohne Count gar nicht gezählt!

Count zählt in der gegebenen Datensatzgruppe, dabei Count(*) die Datensätze und Count(Feld) die Anzahl des Vorkommens eines Wertes im betreffenden Feld, Null wird dabei nicht mitgezählt. Da eine ID vermutlich nicht Null ist, dürfte oben das Ergebnis gleich sein.

Wenn Du die Anzahl der T1.id ohne Duplikate haben willst, müsstest Du zusätzlich geeignet gruppieren oder gleich nur in der entsprechenden Datensatzgruppe (Tabelle) zählen:
SELECT Count(T1.id) AS X
FROM T1


Beim Coden auch schon denken und dabei den gesunden Menschenverstand nicht ausschalten!

MfGA
ebs
Titel: Re: Count-Funktion zählt IDs doppelt?
Beitrag von: henfoni am August 02, 2012, 13:47:28
Nur in der Tabelle T1 zählen geht nicht, da ich ja noch die Bedingung aus T3 brauche..

Ich hab exakt den gleichen Code, einmal mit Count und einmal ohne. Da sollte man doch denken, dass die gleiche Anzahl rauskommt oder nicht!?

Ich lasse es nun einfach bei einer Kreuztabelle, die sich auf die Abfrage ohne Count bezieht.
Titel: Re: Count-Funktion zählt IDs doppelt?
Beitrag von: Beaker s.a. am August 02, 2012, 23:05:47
Hallo henfoni,
Hast Du das
ZitatCount zählt in der gegebenen Datensatzgruppe, dabei Count(*) die Datensätze und Count(Feld) die Anzahl des Vorkommens eines Wertes im betreffenden Feld
nicht gelesen oder nicht verstanden?
Hast Du
SELECT Count(*) AS AnzahlvonT1
FROM T1 INNER JOIN (T2 INNER JOIN T3 ON T2.id = T3.T2_id) ON T1.id = T2.T1_id
WHERE (((T1.sys_eing_dat) Between #1/1/2012# And #1/3/2012#) AND ((T3.Rechnungsnr)<>889));

mal ausprobiert?
gruss ekkehard
Titel: Re: Count-Funktion zählt IDs doppelt?
Beitrag von: henfoni am August 03, 2012, 14:39:23
Moin,

ich bin schon selten dämlich. Hat sich alles erledigt, habe das Group by bei der Zählung ohne Count übersehen.

Danke für eure Mühen+Geduld