Letzten Eintrag eines "Paares" ermitteln?

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Letzten Eintrag eines "Paares" ermitteln?

    Hallo zusammen,

    folgendes Problem:

    Tabelle messages hat u.a. folgende Felder:
    id, timestamp, user1, user2, msg

    Mögliche Datensätze:
    0 | timestamp | 1 | 2 | huhu
    1 | timestamp | 2 | 1 | hallo
    2 | timestamp | 2 | 1 | hallo?
    3 | timestamp | 1 | 2 | ja?
    4 | timestamp | 1 | 3 | huhu
    5 | timestamp | 3 | 1 | hi
    6 | timestamp | 3 | 2 | hallo
    ... usw.

    Ich möchte nun den aktuellsten Wert eines jeden "User-Paares" in dem der User mit der ID 1 vorkommt (1&2/2&1, 1&3/3&1, ...) ermitteln, so performant wie möglich. Leider stehe ich auf dem Schlauch.

    Ansatz:
    PHP-Code:
    # Alle Datensätze holen, in denen User 1 vorkommt:
    SELECT ...
      
    FROM ...
    WHERE user1 1
          
    OR user2 1
    ORDER BY timestamp DESC 
    Ich habe etwas mit GROUP BY, DISTINCT und LIMIT herumgespielt, aber bin nicht viel weiter gekommen. Vielleicht hilt da ein Subquery?

    Momentan filter ich die Daten per PHP, aber das ist die absolute Notlösung.

    Freue mich auch Antworten, Danke!
    Lasst euch nicht lumpen, hoch den Humpen!

  • #2
    Code:
    SELECT
      MAX(timestamp)
    ...
    Vom Prinzip her.

    Peter
    Nukular, das Wort ist N-u-k-u-l-a-r (Homer Simpson)
    Meine Seite

    Kommentar


    • #3
      Zitat von Kropff Beitrag anzeigen
      Code:
      SELECT
        MAX(timestamp)
      ...
      Vom Prinzip her.

      Peter
      Danke für deine schnelle Antwort. Leider hat mir MAX(timestamp) nicht weiter geholfen.

      Hier in Pseudocode was ich ungefähr meine:

      PHP-Code:
      SELECT ...
      FROM ...
      WHERE  user1 OR user2 1
      GROUP BY 
      IF(user1 1user1user2),
      MAX(timestamp
      Lasst euch nicht lumpen, hoch den Humpen!

      Kommentar


      • #4
        Hallo,

        das geht in die Richtung von MySQL :: MySQL 5.0 Reference Manual :: 3.6.4 The Rows Holding the Group-wise Maximum of a Certain Column
        SELECT s1.article, s1.dealer, s1.price
        FROM shop s1
        LEFT JOIN shop s2 ON s1.article = s2.article AND s1.price < s2.price
        WHERE s2.article IS NULL;
        Ich bin mir aber nicht ganz sicher, da du dich nicht ganz unmissverständlich ausgedrückt hast und auch kein Vergleichsergebnis gepostet hast.

        Gruß,

        Amica
        [COLOR="DarkSlateGray"]Hast du die [COLOR="DarkSlateGray"]Grundlagen zur Fehlersuche[/color] gelesen? Hast du Code-Tags benutzt?
        Hast du als URL oder Domain-Beispiele example.com, example.net oder example.org benutzt?
        Super, danke!
        [/COLOR]

        Kommentar

        Lädt...
        X