PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Die Antwort strikt in der Reihenfolge der Abfrage sortieren


Doc_McSky
02.09.2009, 13:17:48
Hallo Leute,

mal wieder eine von den Fragen, wozu ich keine Antwort finde:

Kann ich einem SQL Aufruf vorgeben, das die Ergebnisse in der Reihenfolge, die ICH festlege, zurückgeliefert werden?

Beispiel:
Ich habe eine Liste von ID's. Die zugehörigen Daten will ich in exakt der Reihenfolge zurückgeben, wie die Reihenfolge der ID's in der Liste sind. Wenn ich jetzt stur einen SQL String bastle, dann z.B.:


$sql = "SELECT x, y, z FROM tabelle WHERE id=12 OR id=56 OR id=34 OR id=78";


Dann bekomme ich 4 Ergebnisse zurück, die ohne Sortierangaben in der Reihenfolge zurückgegeben werden, wie sie einmal in der DB gespeichert wurden oder ich gebe eine Sortierung an, klar, aber keine Datensortierung passt hier.
Ich will ja die Ergebnisse in der Reihenfolge Datensatz 12, Datensatz 56, Datensatz 34 und Datensatz 78 haben...

Kann man das der DB sagen, das sie strikt nach der Abfragereihenfolge Ergebnisse liefern soll?
Oder muss ich ein Konstrukt drumherum bauen, welches dann Stück für Stück die ID Liste durchgeht und EINZELN eine DB Abfrage macht?

Wenn das nur mit dem Konstrukt drumherum geht, was nimmt dann mehr Zeit in Anspruch?
EIN Aufruf zur DB alle Daten mit den ID's zurückzugeben (wie auch immer sortiert), oder
DUTZENDE von Einzelaufrufen aus z.B. einer Schleife?

Hoffe mir kann einer helfen, vielen Dank schonmal im Voraus.

Gruß
Doc

Crisps
02.09.2009, 13:35:44
Ich nehme an -wenn ich dich richtig verstanden habe- dass ORDER BY FIELD in diesem Fall das richtige Ergebnis anzeigen würde:

ORDER
BY FIELD(id, 12, 56, 34, 78);

Doc_McSky
02.09.2009, 13:50:50
He, also manchmal seit ihr echt ne Wucht, ja sicher, so geht das.

Da ich mir absolut nicht vorgestellt habe, das da der normale ORDER Befehl zu tragen kommt habe ich im Referenzhandbuch dort nicht gesucht, sondern mit ominösen Suchbegriffen, die alles liefertne, nur nicht mein Ergebnis.

Ich danke dir Recht herzlich, immer gut wenn es Leute gibt, die soviele Befehle auswendig kennen, danke.

Gruß
Doc