MySql count () gibt 0 zurück, wenn keine Datensätze gefunden wurden

8

Ich habe eine Reihe von Posts auf monatlicher Basis. Jetzt brauche ich ein Array, das die Gesamtzahl der Posts in jedem Monat enthält. Ich versuchte unter MySql Abfrage, es funktioniert gut, aber ich habe 0 (Null) für Monate, wo es keine Datensätze erwartet. Hier wird nicht 0 zurückgegeben.

Ich habe gelesen, dass COUNT () nicht '0' zurückgibt, also wie erreiche ich das?

Ich habe versucht, IFNULL () und COALESCE (), aber immer noch das gleiche Ergebnis. Bitte helfen Sie mit dieser Abfrage. Vielen Dank ......

%Vor%

Ergebnis:

%Vor%

Erwartetes Ergebnis (Wenn im Januar keine Beiträge vorhanden sind):

%Vor%

Beispieldaten:

%Vor%     
sravis 19.05.2013, 15:43
quelle

5 Antworten

15

Es gibt keinen Datensatz für den Monat January , weshalb Sie kein Ergebnis erhalten. Eine Lösung, die funktioniert, besteht darin, eine Unterabfrage mit einer Liste von Monaten zu verbinden, die in der Liste angezeigt werden sollen.

%Vor%

AUSGABE

%Vor%     
John Woo 19.05.2013, 16:00
quelle
3

COALESCE ist das, was Sie verwenden könnten, wenn Sie eine Tabelle mit Daten haben und sich dagegen verbünden. Es geht von links nach rechts, um den ersten Nicht-Null-Wert zurückzugeben. Deine Gruppe sieht im Moment ein bisschen nussig aus, ich habe sie angepasst.

%Vor%

Wo ist die Datumstabelle? ..

%Vor%

Siehe hier: Ссылка

    
Paul Stanley 19.05.2013 15:50
quelle
3

Hast du IFNULL() richtig versucht? Vielleicht probiere IFNULL(Count(id), 0) in einer SELECT -Klausel mit Join.

    
octoback 19.05.2013 15:47
quelle
1

Wenn die Ergebnismenge während dieses Zeitraums keine Beiträge enthielt, werden keine Ergebnisse zum Zählen angezeigt, weshalb sie nicht angezeigt werden.

Sie müssten entweder zu einer anderen Tabelle mit allen Jahresmonaten hinzufügen oder die Daten programmatisch ausfüllen, wenn die Ergebnisse zurückgegeben werden. Ich kann mir keinen anderen Weg vorstellen, aber vielleicht ist es möglich.

Auch, wie andere gesagt haben, trennen Sie die Gruppe durch ein Komma.

    
Justin 19.05.2013 15:54
quelle
0

Ich denke, Sie brauchen einfach eine Abfrage wie diese

%Vor%

vb Beispiel

%Vor%

schreibe dann

%Vor%     
MRRaja 02.10.2016 20:10
quelle

Tags und Links