Boardunity & Video Forum

Boardunity & Video Forum (https://boardunity.de/)
-   Programmierung und Datenbanken (https://boardunity.de/programmierung-datenbanken-f23.html)
-   -   LEFT JOIN macht Probleme (https://boardunity.de/left-join-macht-probleme-t3071.html)

MrNase 29.04.2005 13:31

LEFT JOIN macht Probleme
 
Huhu Leute! :)

Ich bin am verzweifeln :/

Gegeben ist folgende Query:
PHP-Code:

$zustand $db->query("SELECT zu.*, co.*,
                         count(co.contentid) AS numbercontent
                         FROM zustand AS zu 
                         LEFT JOIN content AS co 
                         ON (co.zustand = zu.zustandid)
                         WHERE co.categoryid != '0'
                         GROUP BY zu.zustandname
                         ORDER BY numbercontent DESC"
); 


Folgendes Problem:
numbercontent gibt an wieviele Inhalte (content) zu jedem Zustand (zustand) vorhanden sind.
Normalerweise ergibt dies eine Liste aller Zustände mit einer Zahl dahinter.
In meinem Beispiel sind es 6 Zustände und hinter jedem Zustand steht eine 1 da dort nur ein Inhalt jeweils hinterlegt ist.

Jetzt will ich aber alle Inhalte nicht berücksichtigen deren categoryid gleich 0 ist da diese was besonderes sind.

Die obige Query macht nun aber folgendes: Sie grenzt alle Inhalte aus deren categoryid gleich 0 ist, kürzt aber gleichzeitig die Liste der Zustände sodass aus der Liste mit ehemals 6 Einträgen eine kleine Liste mit nur 2 Einträgen geworden ist. (4 Inhalte haben die categoryid 0 ;))


Wie kann ich es nun erreichen, dass alle Inhalte deren categoryid gleich 0 ist nicht bei den Zahlen berücksichtigt werden ohne das die Liste der Zustände schrumpft?

Bei Zuständen die keinen Inhalt haben soll eine 0 stehen, die Query da oben löscht diese Zustände aber komplett raus :(

Xenon 04.05.2005 11:37

bin mir jetzt zwar ned sicher, ob ich dich verstehe, aber wenn cih das verstanden habe was du willst sollte es das hier machen:

PHP-Code:

 $zustand $db->query("SELECT zu.*, co.*,
                         SUM(IF(co.categoryid != '0', 1, 0)) AS numbercontent
                         FROM zustand AS zu
                         LEFT JOIN content AS co
                         ON (co.zustand = zu.zustandid)
                         GROUP BY zu.zustandname
                         ORDER BY numbercontent DESC"
); 



Alle Zeitangaben in WEZ +1. Es ist jetzt 00:29 Uhr.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25