Mehrfacheinträge auslassen

Collapse
X
 
  • Filter
  • Time
  • Show
Clear All
new posts

  • 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ß
    Last edited by ewrson; 22-06-2010, 13: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]

    Comment


    • #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
      Last edited by ewrson; 22-06-2010, 11:43.

      Comment


      • #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.

        Comment


        • #5
          Originally posted by medium22 View Post
          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

          Comment


          • #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

            Comment


            • #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]

              Comment

              Working...
              X