Vinzenz Mai: woher kommt dieser Result

Beitrag lesen

Hallo,

also lautet das Ergebnis Deiner Abfrage

cID   descr                COUNT(o.oID

NULL  NULL                    1
2     Original Grafik       214
3     Skulptur               69

Das RDBMS ist MySQL 4.0.27 bei 1&1

oh je, die ist ja jenseits von Gut und Böse :-(

Warum sollte es bei Deinen ganzen Left Joins nicht einen Datensatz in objects geben,
für den es keinen passenden Eintrag in Matrix oder Kategorie gibt.
weil es kein Objekt ohne Künstler gibt,
irgendwer muss es ja verbrochen haben!
Gleiches gilt für die Kategorien ... eine ist Pflicht, mehrere möglich.

warum dann LEFT JOIN, nimm doch einfach INNER JOIN.

Da ich keinen Shellzugang habe, muss dieses reichen SQL-Tester.
Oben stehen die Results zu den Querys, die unten gelistet werden.

Wenn Du den Datensatz finden willst, der für die NULL-Werte zuständig ist, dann musst Du auf NULL-Wert prüfen:

  
SELECT  
    o.oID,  
    c.cID  
FROM  
    objects   AS o  
LEFT JOIN  
    matrix    AS m ON o.oID = m.oID  
LEFT JOIN  
    categorie AS c ON c.cID = m.cID  
WHERE  
    -- c.cID < 1 -- prüft nicht auf NULL  
    c.cID [link:http://dev.mysql.com/doc/refman/4.1/en/comparison-operators.html#operator_is-null@title=IS NULL] -- Prüfung auf NULL-Wert  

Übrigens: Deine WHERE-Klausel im Ausgangsposting sorgt dafür, dass zumindest für objects und kuenstler ein INNER JOIN verwendet wird :-)

Freundliche Grüße

Vinzenz