MySQL 2 Fragen. (Sortieren, Multieinträge heraussuchen)

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • MySQL 2 Fragen. (Sortieren, Multieinträge heraussuchen)

    Hallo,

    ich habe 2 MySQL Fragen.

    1. Ich möchte in PHP alle Nachrichten aus einer Datenbank nach Datum sortiert haben. Dabei sollen mir nur die letzten 25 Nachrichten in aufsteigender Reinfolge(aktuellste zu letzt) ausgegeben werden.
    Mit [SQL]SELECT * FROM tabelle ORDER BY datum DESC LIMIT 25[/SQL] bekomme ich zwar die letzt 25 aber sie sind dann in umgekehrter Reinfolge.(aktuellste zu erst)

    2. Ich habe eine Tabelle mit den Feldern id, user_id, ... . Die user_id kann jedoch mehrfach vorkommen.
    Ich möchte jetzt alle Einträge, von denen mindestens 2 die gleiche user_id haben herausfischen und die älteren dieser Einträge löschen.

    Also wen man 2 Einträge mit der user_id 2 hat und dan noch 3 einträge mit der user_id 5 dan sollen jeweils nur der aktuellste übrig bleiben die äleren sollen entfernt werden.

    Das Entfernen bekomme ich hin, ich weis abe rnoch garnicht wie man mit MySQL gleiche Einträge herausfiltert.


    Kann jemand einem blutigem Anfänger wie mir helfen? :).

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von ViktorM ()

  • Hi,


    zu 1.
    wenn du sortieren möchtest gibt es "DESC"ending und "ASC"ending wobei ASC afaik default sein sollte.
    Aber es kommt auch darauf an wie du deine Datenspalte formatiert hast.

    zu 2.
    Du kannst einfach nach user_id gruppieren und dann die Einträge zählen und dir die anderen nötigen Werte holen.

    Quellcode

    1. Select COUNT(*) as count_user_id, user_id, max(date) as max_date from table group by user_id


    Wenn du dann jeden user iterierst und dann für user_id x, count_user_id > 1 und max_date < date, dann kannste den Datensatz löschen so, dass am Ende nurnoch für jeden User der neuste Eintrag übrig bleibt.

    Man könnte das auch alles in einem Schritt machen, aber wenn ich das richtig sehe kommt man dann um temporäre tabelle(en) nicht drum herum.