Mehrfacheinträge auslassen

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

  • Mehrfacheinträge auslassen

    Hallo php-resource gemeinde

    ich versuche jetzt schon länger, dass mehrfach einträge beim auslesen der mysql db ausgelassen werden soll:


    Code:
    SELECT DISTINCT id, user, date FROM users WHERE status > 0 ORDER BY date DESC
    Aber komme in moment irgendwie nicht weiter

    Wichtig ist hierbei das nach datum sortiert wird, habe schon gelesen das man auch über 'ORDER BY' die möglichkeit hätte, die ich leider aber in diesem fall nicht nutzen kann.
    Gibt es noch andere möglichkeiten?
    Vielen dank im voraus für hilfe.

    Gruß
    Zuletzt geändert von ewrson; 22.06.2010, 14:21.

  • #2
    Hallo,

    distinct bezieht sich auf alle abgerufenen Spalten, bei dir ist aber nur eine gleich. Sieh dir mal group by an.

    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


    • #3
      Hi,

      danke für den tipp, aber wenn ich es so mache:
      Code:
      SELECT id, user, date FROM users GROUP BY user ORDER BY date DESC
      Werden mir komischerweise keine neuen einträge aktuellere datums angezeigt?




      Der rote bereich sollten angezeigt werden, aber es wird der blaue genommen? (bild ohne GROUP BY)
      Es wird scheinbar nicht das aktuelle genommen sondern der aller erste eintrag, ohne rücksicht auf das datum



      Bei 'ODER BY' wird nur das ASC bzw. DESC berücksichtigt, nicht aber date oder id
      Zuletzt geändert von ewrson; 22.06.2010, 12:43.

      Kommentar


      • #4
        Hallo,


        Wieso eigentlich GROUP BY id wenn Du nach user gruppieren möchtest? Die id wird hier sowieso einmalig und für eine gruppierung dementsprechend sinnlos sein.

        Kommentar


        • #5
          Zitat von medium22 Beitrag anzeigen
          Hallo,


          Wieso eigentlich GROUP BY id wenn Du nach user gruppieren möchtest? Die id wird hier sowieso einmalig und für eine gruppierung dementsprechend sinnlos sein.
          Sry, hast natürlich recht habe mich vertippt
          Aber das problem bleibt bestehen

          Kommentar


          • #6
            Hab jetzt die lösung:

            Code:
            SELECT a.id, a.user, a.date
            FROM users a
            WHERE a.date = (SELECT max(b.date) FROM users b WHERE b.user = a.user)
            ORDER BY a.date DESC
            Vielen dank für die mithilfe

            Kommentar


            • #7
              Hallo,

              wenn dir das zu nicht zu langsam ist…

              Nimm besser eine unkorrelierte Unterabfrage (uncorrelated subquery) oder einen negativen left Join.

              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