Maik W. aus E.: mySQL 4.0 - Anzahl der Anzahl der Datensätze

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

--
Diese Dauerleihgabe wird Ihnen präsentiert von ROMY!
Maik. W. aus E. sagt Dankeschön ;-)
  1. 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