Mailinglisten-Archive |
Marcus Fueg wrote: > Hallo ich möchte (immernoch) eine kleine Galerie nach meinen Wünschen > aufbauen, nun hänge ich aber an diesem Problem: > > SELECT > COUNT(pics.id) AS pics, > COUNT(comments.id) AS comments > FROM allgemein > LEFT JOIN pics ON allgemein.id = pics.eid > LEFT JOIN comments ON allgemein.id = comments.eid > WHERE allgemein.id = 17 > GROUP BY allgemein.id > ORDER BY allgemein.id ASC > > > Die Abfrage bringt mir zwar das korrekte Ergebnis für COUNT(pics.id) AS pics > aber COUNT(comments.id) AS comments kommt das gleiche Ergebnis wie bei den > Bildern raus. > Wenn die Comments Tabelle nicht gefüllt ist, kommt 0 raus, ist ja ok. aber > sobald ein Wert drin ist, nimmt es die Anzahl der ersten Count Abfrage :( COUNT() zählt alle werte die ungleich null sind du machst LEFT JOIN von pics auf comments -> d.h. in pics wird nie ein NULL-wert stehen ein select ergäbe bei dir: allgemein.id | pics.id | comments.id | ------------------------------------- 1 | 1 | 1 2 | 2 | 5 3 | 3 | 7 ergibt also COUNT(pics) = COUNT(comments) du brauchst aber: comments.id | pics.id | allgemein.id ------------------------------------- 1 | 1 | 1 2 | 1 | 1 3 | 2 | 2 4 | 2 | 2 5 | 2 | 2 6 | 2 | 2 7 | 3 | 3 ergäbe also: COUNT(DISTINCT pics) = 3 COUNT(comments) = 7 du musst es umdrehen, also die comments nach vorne nehmen wenn du die comments zählen willst und dann ein COUNT(DISTINCT) um die bilder zu zählen ... ( die allgemein ganz nach hinten) also "... FROM comments LEFT JOIN ..." -- Sebastian Mendel www.sebastianmendel.de www.tekkno4u.de www.nofetish.com -- Infos zur Mailingliste, zur Teilnahme und zum An- und Abmelden unter -->> http://www.4t2.com/mysql
php::bar PHP Wiki - Listenarchive