Simone: Select Anweisung

Hallo

Bei einer Datenbankabfrage  benötige ich eine Sortierung nach den IDs

Meine Abfrage lautet:
$sql = "SELECT  *  FROM tabel WHERE ID IN ($element)   ";

.... WHERE ID IN (3906,3858,220,3767,2831,3907,2569,1269,3908,3770)..

Das Ergebnis der Abfrage ist jedoch nicht in der Reihnfolge wie es die IN Anweisung vorgibt!

Auch das lesen des Manuals brachte mir keine "Eingebung"

Wie bekomme ich die Abfrageausgabe entsprechend dem Abfragemuster.

Danke

Simone

  1. hi,

    Meine Abfrage lautet:
    $sql = "SELECT  *  FROM tabel WHERE ID IN ($element)   ";

    .... WHERE ID IN (3906,3858,220,3767,2831,3907,2569,1269,3908,3770)..

    Das Ergebnis der Abfrage ist jedoch nicht in der Reihnfolge wie es die IN Anweisung vorgibt!

    wieso sollte es?
    IN gibt nun mal keine reihenfolge vor, sondern nur eine unsortierte menge an möglichen werten.

    Wie bekomme ich die Abfrageausgabe entsprechend dem Abfragemuster.

    in dem du anschließend in der sprache, mit der du die daten weiter verarbeitest, eine sortierung nach deinen wünschen vornimmst.

    gruß,
    wahsaga

    --
    "Look, that's why there's rules, understand? So that you _think_ before you break 'em."
    1. Hi,

      Wie bekomme ich die Abfrageausgabe entsprechend dem Abfragemuster.

      in dem du anschließend in der sprache, mit der du die daten weiter verarbeitest, eine sortierung nach deinen wünschen vornimmst.

      oder mittels der SQL-Statement angefuegten SORT-Klausel, also
       [...] SORT BY ID ASC
      die Daten gleich sortiert von MySQL (oder so) abholst.

      Gruss,
      Ludger

      --
      "Wer nicht kaempft hat schon gewonnen."
      1. Hi,

        ...je nach Dialekt kann es auch "ORDER BY ID ASC" oder (DESC)
        heißen.

        Grüße

        Uhfe

      2. Hi,Ludger

        Genau das versuche ich ;)

        Die Sortierung sollte beibehalten werden.

        Der Versuch ORDER BY FIELD(id erscheint noch nicht zu gehen.

        Danke
        Simone

        1. Hi,

          Die Sortierung sollte beibehalten werden.

          welche Sortierung eigentlich?

          SELECT
           *
          FROM
           tabel
          WHERE
           (ID = 3906)
          UNION SELECT
           *
          FROM
           tabel
          WHERE
           (ID = 3858)
          UNION SELECT
           *
          FROM
           tabel
          WHERE
           (ID = 220)
          ...

          liefert die Datensaetze in der von Dir genannten Reihenfolge.

          Gruss,
          Ludger

          --
          "Wer nicht kaempft hat schon gewonnen."
          1. Hi, Ludger
            Die Sortierung wird im Vorfeld festgelegt.
            Ist die Blätterfunktion einer Seitensuchfunktion.

            Ich übergebe eindeutige Schlüssel und brauch dadurch nicht nochmal die gesamte Suche ab position X starten

            Ich werde deinen Code testen.
            Danke

            Simone

      3. hi,

        oder mittels der SQL-Statement angefuegten SORT-Klausel, also
         [...] SORT BY ID ASC
        die Daten gleich sortiert von MySQL (oder so) abholst.

        wenn ich richtig verstanden habe, will sie die bei IN angegebene "reihenfolge",
        (3906,3858,220,3767,2831,3907,2569,1269,3908,3770)
        genau so von links nach rechts (oder auch umgekehrt) als "sortierung" erhalten.

        das ist nach gängiger mathematik aber weder ASC- noch DESCENDING.

        gruß,
        wahsaga

        --
        "Look, that's why there's rules, understand? So that you _think_ before you break 'em."
        1. Hi,wahsaga

          Genau das möchte ich ;)

          Danke Simone

  2. HI,

    Ok, danke nochmal an alle ;))
    Ist ein gutes Bord hier.

    Ich habs'

    .... WHERE ID IN ($element) ORDER BY FIELD(ID,$element) ...

    Simone

    1. Hallo Simone,

      Ist ein gutes Bo[a]rd hier.

      ...autsch! ;-)

      Gruss,
      Daniel