phpbar.de logo

Mailinglisten-Archive

Select Abfragefür Galerie II

Select Abfragefür Galerie II

Cybot 4t2.com-mysql at tekkno4u.de
Mit Jul 23 14:48:46 CEST 2003


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