Vinzenz Mai: woher kommt dieser Result

Beitrag lesen

Hallo,

ein Query liefert zwar exakte Ergebnisse, aber der erste Record ist Murks:

SELECT c.cID, c.descr, COUNT(o.oID)

FROM objects   AS o
LEFT JOIN matrix    AS m ON o.oID = m.oID
LEFT JOIN categorie AS c ON c.cID = m.cID
LEFT JOIN kuenstler AS k ON o.kID = k.kID
    WHERE o.FG = 'Y' AND k.FG = 'Y'
GROUP BY c.cID ORDER BY c.descr

  

> Das Ergebnis sieht wie folgt aus:  
> ~~~php

Array  

> (  
>   [0] => Array  
>       (   [0] =>  
>           [1] =>  
>           [2] => 1  
>       )  
>   [1] => Array  
>       (  
>           [0] => 2  
>           [1] => Original Grafik  
>           [2] => 214  
>       )  
>   [2] => Array  
>       (   [0] => 3  
>           [1] => Skulptur  
>           [2] => 69  
>       )  
> )

warum so kompliziert?

also lautet das Ergebnis Deiner Abfrage

cID   descr                COUNT(o.oID
-------------------------------------
NULL  NULL                    1
2     Original Grafik       214
3     Skulptur               69

Richtig?

Datenbankmanagementsystem müsste MySQL sein, weil jedes andere mir bekannte DBMS statt eines Resultats einen Syntaxfehler zurückgegeben hätte, es fehlt die Gruppierung nach c.descr. Dies wegzulassen, ändert hier vermutlich nichts  am Resultat, da descr von cID, nach dem Du ja gruppierst abhängig sein sollte.

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. Möchtest Du diese Datensätze nicht berücksichtigen, so solltest Du einen INNER JOIN und keinen LEFT JOIN verwenden.

Freundliche Grüße

Vinzenz