Count mit JOINS bringt viele Einzelwerte

querytail

Erfahrenes Mitglied
Hallo zusammen,

ich habe eine in phpMyAdmin funktionierende Abfrage. Nun will ich die Ergebnisse zählen. Mit count bekomme ich viele Einzelwerte (Zahlen), die ich allerdings als Summe benötige. Wie kann ich das umsetzen?

Code:
select count(*) from ordertab LEFT JOIN orderart ON ordertab.id = orderart.orderid LEFT JOIN reviews ON ordertab.userid = reviews.userid AND orderart.artid = reviews.objectid where 1 and ISNULL(reviews.id) GROUP BY ordertab.ordernr

Grüße & Danke

quertail
 
Probier mal das :)

Code:
select count(*) from ordertab LEFT JOIN orderart ON ordertab.id = orderart.orderid LEFT JOIN reviews ON ordertab.userid = reviews.userid AND orderart.artid = reviews.objectid where 1 and ISNULL(reviews.id) GROUP BY ordertab.ordernr LIMIT 0 , 1
 
So, mal formatieren und schon sieht man den Fehler

SQL:
select count(*)
from
	ordertab 
	LEFT JOIN orderart 
		ON ordertab.id = orderart.orderid 
	LEFT JOIN reviews 
		ON ordertab.userid = reviews.userid 
		AND orderart.artid = reviews.objectid 
where 
	1 
	and ISNULL(reviews.id) 
GROUP BY 
	ordertab.ordernr
Du hast ein GROUP BY auf die ordernr. Ergo gibt es die ANzahl pro ordernr. Aus.
Wenn du die Anzahl über alle haben willst, dann nimm der GROUP BY raus.
 
Zuletzt bearbeitet von einem Moderator:
Hallo & Danke,

@Kalito: es kommt keine Fehlermeldung.

@Yaslaw: Wenn ich das "GROUP BY ordertab.ordernr" rausnehme, wird mir nur eine (1), aber viel zu große Zahl ausgegeben.

Grüße

querytail
 
Pro was?
Einfach über alles? Dann stimmt das SQL ohne den GROUP BY.
Pro Ordensnummer? Dann stimmt deines, einfach im SELECT-Teil noch die Ordenummer inzufügen damit du weisst welche Nummer welche Anzahl hat

SQL:
SELECT
    ordertab.ordernr,
    COUNT(*)
FROM
    ordertab 
    LEFT JOIN orderart 
        ON ordertab.id = orderart.orderid 
    LEFT JOIN reviews 
        ON ordertab.userid = reviews.userid 
        AND orderart.artid = reviews.objectid 
WHERE 
    1 
    AND ISNULL(reviews.id) 
GROUP BY 
    ordertab.ordernr
 
Zuletzt bearbeitet von einem Moderator:
So hatte ich es ja (fast) und da werden mir hunderte Einzelwerte angezeigt. Jeweils die Ordernummer mit der Anzahl der Artikel. Ich benötige aber nun noch die Gesamtanzahl der Ordernr.

ordernr count(*)

20---- ----13
21---- ----1
26---- ----3
27---- ----3
28---- ----6
31---- ----3
.
.
.
 
Zuletzt bearbeitet von einem Moderator:

Neue Beiträge

Zurück