Matthias: Brauche einen Tipp zu SQL und PHP

Hallo,

ich habe folgendes Problem:

Ich möchte aus meiner Datenbank 2 spalten auswählen, nach der einen Gruppieren und nach der anderen innerhalb der Gruppierungen sortieren. Soweit so gut, nur wie bekomme ich jetzt mit php immer nur das erste Element einer jeden Gruppierung?

Meine SQL-Abfrgae lautet:

SELECT time,nutzer
FROM meineuser
GROUP BY nutzer
ORDER BY time DESC

Jetzt brauch ich die ersten Elemente der Gruppen, der Rest kann gelöscht werden. Kann ich das Löschen irgendwie in die Abfrage integrieren ?

Danke für Eure Hilfe, Matthias

  1. Hi,

    Jetzt brauch ich die ersten Elemente der Gruppen, der Rest kann gelöscht werden. Kann ich das Löschen irgendwie in die Abfrage integrieren ?

    Filtern mit der TOP-Klausel bzw. mit der LIMIT-Klausel.

    Gruss,
    Lude

  2. hi,

    SELECT time,nutzer
    FROM meineuser
    GROUP BY nutzer
    ORDER BY time DESC

    meiner meinung nach geht das so nicht, da die spalte time nicht gruppiert ist. bei der verwendung von group by müssen alle spalten, die angezeigt werden sollen, auch in der group by klausel stehen, es sei den, es handelt sich um aggregat-funktionen. ansonsten hätten die spalten eine unterschiedliche anzahl von feldern und das kann man mit einer zweidimenstionalen tabelle nicht darstellen.

    bekommst du darauf keine fehlermeldung oder irre ich mich ?

    Ilja

  3. Hi,

    SELECT time,nutzer
    FROM meineuser
    GROUP BY nutzer
    ORDER BY time DESC

    wenn's beispielsweise darum geht haerauszufinden, wie lange welcher Nutzer eingeloggt war, dann fehlt doch eine Aggregatfunktion:

    select
       sum(time),
       nutzer
    from
       meineuser
    group by
       nutzer
    order by
       times desc

    Gruss,
    Lude

  4. Hoch lebe der heilige Self-Join:

    SELECT DISTINCT m1.time, m1.nutzer FROM meineuser m1, meineuser m2 WHERE m1.nutzer=m2.nutzer AND m1.time>m2.time ORDER BY m1.nutzer