MySQL-Abfrageproblem

Feely

Mitglied
Ich habe ein Script für virtuelle Postkarten. Wird eine Karte verschickt, wird folgender Eintrag in der DB gespeichert.

ID,SEND_FROM,SEND_TO,BILD......usw. Wichtig dabei ist hier nur die Spalte BILD in der der Bildname der Karte abgespeichert wird. Bsp. 1_01.jpg, 1_02.jpg, 4_06.jpg usw.

Wie realisiere ich jetzt folgende Abfrage?

"Errechne mir, anhand von BILD, wie oft eine Karte verschickt worden ist (Wie oft diese Karte in der DB vorkommt) und erstelle mir eine Art Topliste mit der höchsten Anzahl an erster Stelle".

Die "Topliste" mit Sortierung is ja nich das Ding....aber mit der Zählung des Kartenvorkommens hänge ich fest :/ Mit einer weiteren DB-Tabelle wäre das ebenfalls kein Problem - Will ich aber nicht :> Vielleicht hat ja hier jemand einen Denkanstoß für mich? :)
 
Ok....Damit ich mir nicht nachsagen lassen muss das ich es nicht versuchen würde...

PHP:
$query = mysql_query("SELECT COUNT(bild) AS maximal FROM $vcard_table GROUP BY bild ORDER BY maximal DESC");
while($result = mysql_fetch_array($query)) {
    print $result['maximal'].",";
}

liefert mir als Ergebnis:

30,26,18,10,8,7,6,5,5,5,4,4,4,4,3,3,3,3,3,3,3,3,2,2,2,2,2,2,2,2,2,1,1,1,1,1,1,1,1,1,1,1,1,

Sprich die Häufigkeit hab ich....aber wie baue ich die Abfrage so um das er mir anstelle der Häufigkeit des Bildes....den Bildnamen ausspuckt? :>
 
Wie wärs mit
SQL:
SELECT DISTINCT bild, COUNT(bild) AS maximal FROM $vcard_table GROUP BY bild ORDER BY maximal DESC
 
Hab mir dann selbst geholfen....

PHP:
$query = mysql_query("SELECT bild,COUNT(bild) AS maximal FROM $vcard_table GROUP BY bild ORDER BY maximal DESC LIMIT 5");
while($result = mysql_fetch_array($query)) {
    print $result['bild'].",";
}

Äh....jo ^^ =) Sorry hatte deinen Beitrag nicht gesehen. Wofür brauch ich das DISTINCT?
 
Zuletzt bearbeitet:
Nö...so war das nicht gemeint...DISTINCT ist kein Ersatz für eine GROUP BY-Klausel.

Mit DISTINCT holst du eindeutige Werte aus Spalte XYZ, hast du z.B. dort 5x Willy und 3x Fritz zu stehen, bekommst du beides je 1 mal...gruppiert wird dabei jedoch nichts.
 
Zurück