Naggi: Befehl distinct() in Kombination mit count

Beitrag lesen

Hell-O!

$ereignisse= $db_zugriff->query("SELECT count(distinct(ereignis)) FROM lm_spielereignisse WHERE spieler_id='$id' GROUP BY ereignis");

Mache dir klar, was das Statement ausliest, nämlich die Anzahl der unterschiedlichen Ereignisse, die in deiner DB vorkommen. Dein "GROUP BY" ist wirkungslos, da du die Spalte, nach der gruppiert werden soll, nicht selektierst, sondern zählst. Das Resultat deiner Abfrage (sofern kein Fehler geworfen wird) ist genau ein Datensatz (den Wert habe ich mal angenommen):

count(distinct(ereignis))


25


>   
> > $start = $spi[ereignis];  
>   
> Es gibt in deinem Resultset keine Spalte mit Namen "ereignis", die du abfragen kannst (siehe die oben stehende Tabelle). Denkbar wäre eventuell sowas:  
>   
> ~~~sql

SELECT  

>   COUNT(DISTINCT(ereignis)) AS anzahl,  
>   ereignis  
> FROM  
>   tabellenname  
> WHERE  
>   spieler_id = '$id'  
> GROUP BY  
>   ereignis

Dies sollte dir folgende Ergebnistabelle liefern:

anzahl | ereignis


1      | Rote Karte
3      | Gelbe Karte
6      | Tore


>   
> Die Inhalte der Ergebnistabelle kannst du dann wie gewohnt abfragen.  
>   
> Siechfred  
  
Hallo Siechfried,  
  
erst einmal vielen Dank für Deine Hilfe, die mich definitiv schon weiter gebracht hat.  
  
Ein Problem besteht jedoch noch: Nachdem ich den von Dir erzeugten Code in PHPmyAdmin eingab, um zu testen, ob wirklich diese Ergebnistabelle ausgespuckt werden würde, war dies nur teils zufriedenstellen:  
  
~~~resultset
anzahl | ereignis  
-----------------  
1      | 1  
1      | 3  
1      | 12

Jedes Ereignis wird also nur einmal gezählt, obwohl das Ereignis 1 (Startaufstellung) allein 20 Mal vorkommt. Woran mag dies liegen? Stoppt die Abfrage nach einem Durchlauf?