mySQL 4.0 - Anzahl der Anzahl der Datensätze
Maik W. aus E.
- datenbank
Tach zusammen,
ich möchte gerne eine "Hitparade" der substance_ref aus der Referenzentabelle br_rec_extended bekommen, in der mehrere Zeilen auf eine ID der br_basisdaten verweisen können:
SELECT COUNT (substance_ref) as anzahl,
substance_ref FROM
br_basisdaten b,
br_rec_extended e
WHERE
b.basisdaten_id= e.basis_ref
GROUP BY substance_ref
ORDER BY anzahl desc
LIMT 0,10
was auch hübsch funktioniert, allerdings scheint die Anzahl nicht zu stimmen, da die b.basisdaten_id ja mehrfach vorkommen kann, denn wenn ich eine Einzelabfrage auf eine Substanz mache:
SELECT basisdaten_id FROM
br_basisdaten b,
br_rec_extended e
WHERE
b.basisdaten_id= e.basis_ref
AND substance_ref=41
GROUP BY basisdaten_id
und mir das mysql_num_rows ausgeben lasse, kommt eine kleinere Anzahl raus.
kann ich die Anzahlen meiner Hitparaden noch irgendwie auf "pro ID" eindampfen und die entsprechenden Anzahlen addieren?
Meine Versuche mit Gruppierung nach basisdaten_id oder distinct-Zugriff haben -natürlich- nicht gefruchtet, ich fürchte, ich sehe den sprichwörtlichen Wald nicht mehr...
Kann jemand helfen?
Danke und
http://www.gruss-aus-essen.de
Maik
Hi maik,
durch das LIMIT schränkst Du natürlich auch das Counting ein.
Wenn ich Dich also richtig verstanden habe, ist das Zählungsergebnis stehts unter 10.
Es gibt für mySQL aber auch eine hübsche Möglichkeit, mit SQL_CALC_FOUND_CORWS potenzielle Datensätze zu zählen.
Das sieht dann in etwa so aus:
SELECT SQL_CALC_FOUND_ROWS id, name FROM tbl LIMIT 0,10
Daraufhin erhälst Du die gewünschte Ausgabe, sowie einen seperaten row, den du folgendermaßen abrufen kannst:
SELECT FOUND_ROWS()
Letzteres erwirkt die Ausgabe der Suchergebnisse unter Ausschluss von LIMIT, also die Gesamtzahl aller Rows.
Liebe Grüße,
Lucas