Ankündigung

Einklappen
Keine Ankündigung bisher.

Frage zu MySql-Abfrage zu Distinct

Einklappen

Neue Werbung 2019

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

  • Frage zu MySql-Abfrage zu Distinct

    Hallo Leute,

    habe mal eine generelle Frage zu einer MySQL-Abfrage via DISTINCT:

    Nehmen wir mal an, ich habe die folgende Tabelle (leute):

    Code:
    id          name       alter
    --------------------------------
    1           Sepp       22
    2           Klaus       27
    3           Gabi        19
    4           Sepp       41
    5           Silke        31
    nun führe ich die folgende Abfrage durch:

    Code:
    "SELECT DISTINCT name FROM leute"
    dann erhalte ich wunschgemäß die Liste ohne Dopplung, in diesem Fall erscheint "Sepp" nur einmal.
    Mein Problem ist nun das, dass ich gerne auch die "id" auslesen würde.
    Wenn ich nach dem Auslesen der Tabelle also eine Ausgabe mache, z.B:

    PHP-Code:
    echo "$name (ID: $id)<br>"
    sollte diese nach Möglichkeit so aussehen:

    Sepp (ID: 1)
    Klaus (ID: 2)
    Gabi (ID: 3)
    Silke (ID: 5)

    leider lässt sich mit Distinct nur eine Spalte definieren, deren Inhalte somit gefiltert werden???? Jedenfalls ist es bei mir so, dass die ID gar nicht erst ausgelesen wird. Von der Logik her denke ich mir halt, dass PHP bzw. MySQL halt nicht weiß, welche ID zugeordnet werden soll. Im obigen Beispiel könnte es ja da die 1 oder die 4 sein... aber...
    Welche Alternativen habe ich denn, dass es nach oben beschriebenen Wünschen läuft???

  • #2
    SELECT id, DISTINCT name FROM leute

    Kommentar


    • #3
      kurz und knapp: funzt nicht!

      Kommentar


      • #4
        @niksoch: DISTINCT ist eigentlich kein Operatore, den man vor Variablen stellt. Das ganze heißt
        Code:
        SELECT DISTINCT a, b, c, …
        und verhindert, dass Datensätze doppelt ausgelesen werden. Funktioniert aber nur, wenn diese komplett gleich sind.

        @Timer: GROUP BY name ist dein Fall!

        Kommentar


        • #5
          Stimmt. Was man hier
          SELECT
          [ALL | DISTINCT | DISTINCTROW ]
          [HIGH_PRIORITY]
          [STRAIGHT_JOIN]
          [SQL_SMALL_RESULT] [SQL_BIG_RESULT] [SQL_BUFFER_RESULT]
          [SQL_CACHE | SQL_NO_CACHE] [SQL_CALC_FOUND_ROWS]
          select_expr, ...
          daran sehen kann, dass DISTINCT kein Teil von select_expr ist.

          Kommentar


          • #6
            Jop und als gütiger Moderator verschiebst du das Thema doch bestimmt in den Datenbankbereich, oder?

            Kommentar


            • #7
              Si Senor.

              [MOD: verschoben]

              Kommentar

              Lädt...
              X