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