[PHP] Mysql-Abfrage "GROUP BY x ORDER BY y"

Dieses Thema im Forum "Webentwicklung" wurde erstellt von Blackb!rd, 8. September 2011 .

Schlagworte:
  1. Diese Seite verwendet Cookies. Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies. Weitere Informationen
  1. #1 8. September 2011
    Mysql-Abfrage "GROUP BY x ORDER BY y"

    Hey Leute,

    ich versuche eine Abfrage zu erstellen die aus einer Tabelle zusammengehörende Beiträge anhand der ID gruppiert, aber SO sortiert, dass mir immer der LETZE angezeigt wird.

    Mein erstellter Query:
    PHP:
    SELECT  FROM table GROUP BY id ORDER BY datum DESC

    Hat jemand eine Idee wie man das lösen kann?

    Gruß Blackb!rd
     

  2. Anzeige
    Dealz: stark reduzierte Angebote finden.
  3. #2 8. September 2011
    AW: Mysql-Abfrage "GROUP BY x ORDER BY y"

    Wenn ich das richtig verstehe, willst du NUR den letzten angezeigt bekommen, oder wie?
     
  4. #3 8. September 2011
    AW: Mysql-Abfrage "GROUP BY x ORDER BY y"

    LIMIT ?
     
  5. #4 8. September 2011
    AW: Mysql-Abfrage "GROUP BY x ORDER BY y"

    Hey,

    ich habe mich wohl etwas unverständlich ausgedrückt:

    Es gibt viele Beiträge zu zB einem Thema. Die ID die ich gruppiere ist in dem Fall die Themen ID. Das heißt ich habe 5 Einträge zum Thema 1, 10 zum Thema 2.

    Jetzt möchte ich 2 Ergebnisse haben den letzen Eintrag zu Thema 1 und den letzen Eintrag zu Thema 2.


    Hoffe das war jetzt verständlicher :)



    Gruß Blackb!rd
     
  6. #5 8. September 2011
    AW: Mysql-Abfrage "GROUP BY x ORDER BY y"

    hi,

    probier das mal
    PHP:
    SELECT id uid MAX ( datum ) AS  datum
    FROM 
    ` tabelle `
    GROUP BY uid
    ORDER BY datum DESC

    // test ausgabe
    id     uid     datum
    4     2     2011
    -09-08  19 : 42 : 31
    3     37     2011
    -09-08  19 : 42 : 27
    1     1     2011
    -09-08  19 : 42 : 23
    MAX () ermittelt den höchsten wert einer numerischen spalte. was MIN() ist, ist dann auch klar ;)
     
  7. #6 8. September 2011
    AW: Mysql-Abfrage "GROUP BY x ORDER BY y"

    ICh dachte fast es geht, aber er liest NUR das datum von dem aktuellsten Datensatz aus und nimmt die restlichen informationen von einem bliebigen Datensatz. Aber guter Anstatz :)


    Gruß Blackb!rd
     
  8. #7 9. September 2011
    AW: Mysql-Abfrage "GROUP BY x ORDER BY y"

    mist hast recht
    PHP:
    id     uid     datum 
    1     1     2011
    -09-08  19 : 42 : 23  
    id 1 ist nicht richtig

    // edit
    hab folgendes dazu gefunden
     
  9. #8 9. September 2011
    AW: Mysql-Abfrage "GROUP BY x ORDER BY y"

    Code:
    SELECT 
     DISTINCT 
     
     MAX(s.`id`) AS `id`, 
     MAX(s.`datum`) AS `datum`,
     s.`uid`
    
    FROM `tabelle` AS s
    GROUP BY s.`uid` ASC
    ORDER BY s.`datum` DESC
    funktioniert bei mir ohne probleme. oder ich versteh das problem nicht.
    dieser query liefert den jeweils aktuellsten eintrag (id, datum) gruppiert nach uid

    bespiel:
    Code:
    mysql> SELECT * FROM tabelle;
    +----+-----+------------+
    | id | uid | datum |
    +----+-----+------------+
    | 1 | 1 | 1315600962 |
    | 2 | 2 | 1315600962 |
    | 3 | 1 | 1315600978 |
    | 4 | 2 | 1315600978 |
    | 5 | 3 | 1315601255 |
    +----+-----+------------+
    5 rows in set (0.00 sec)
    Code:
    mysql> SELECT
     -> DISTINCT
     ->
     -> MAX(s.`id`) AS `id`,
     -> MAX(s.`datum`) AS `datum`,
     -> s.`uid`
     ->
     -> FROM `tabelle` AS s
     -> GROUP BY s.`uid` ASC
     -> ORDER BY s.`datum` DESC;
    +------+------------+-----+
    | id | datum | uid |
    +------+------------+-----+
    | 5 | 1315601255 | 3 |
    | 3 | 1315600978 | 1 |
    | 4 | 1315600978 | 2 |
    +------+------------+-----+
    3 rows in set (0.00 sec)
     
  10. #9 9. September 2011
    AW: Mysql-Abfrage "GROUP BY x ORDER BY y"

    genau das ergebnis wollte ich erzielen, danke, wieder was gelernt.

    kurze frage zu deiner ausgabe.
    gibt es ein tool oder etwas für phpmyadmin um so ne formatierung zu bekommen?
    ich mein das
    Code:
    mysql> SELECT * FROM tabelle;
    +----+-----+------------+
    | id | uid | datum |
    +----+-----+------------+
    | 1 | 1 | 1315600962 |
    | 2 | 2 | 1315600962 |
    | 3 | 1 | 1315600978 |
    | 4 | 2 | 1315600978 |
    | 5 | 3 | 1315601255 |
    +----+-----+------------+
    5 rows in set (0.00 sec)
    
     
  11. #10 9. September 2011
    AW: Mysql-Abfrage "GROUP BY x ORDER BY y"

    ne, das ist die konsolenanwendung in /usr/bin namens "mysql" bzw. "mysql.exe" unter windows im install-ordner
     
  12. #11 12. September 2011
    AW: Mysql-Abfrage "GROUP BY x ORDER BY y"

    feedback @Blackb!rd?

    wär nützlich zu wissen ob dein problem gelöst wurde und sich das thema damit erledigt hat. ansonsten steht hier ne offene - aber scheinbar doch gelöste - frage im raum und keiner weiß was er tun soll.

    danke.
     
  13. #12 12. September 2011
    AW: Mysql-Abfrage "GROUP BY x ORDER BY y"

    Sorry Murdoc, habe dein Feedback schon am Wochenende gelesen, aber bisher keine Zeit gehabt es umzusetzen :) - Das kann noch etwas dauern. Entweder closen wirs so lange oder wir warten nochetwas ;)


    Gruß Blackb!rd
     

  14. Videos zum Thema
Die Seite wird geladen...
Similar Threads - PHP Mysql Abfrage
  1. Antworten:
    2
    Aufrufe:
    759
  2. Antworten:
    7
    Aufrufe:
    1.391
  3. Antworten:
    3
    Aufrufe:
    2.154
  4. Antworten:
    5
    Aufrufe:
    923
  5. Antworten:
    5
    Aufrufe:
    584
  • Annonce

  • Annonce