FraFu: mysql order by

Beitrag lesen

Hallo!

Folgendes Problem:

Tabelle:
artikel
  artikel_id - primarykey, autoincrement

Ich habe eine Funktion getTable($res) die ein MySQL Resultset ($res) als Parameter bekommt und das Resultset abbarbeitet und damit eine Tabelle aufbaut.

Ich habe eine weitere Funktion getResult($ids) das ein Array von artikel-ids bekommt, mit denen die Tabelle aufgebaut werden soll.

zb getResult(array(1,4,5)) würde folgende Query absetzen:

  
SELECT artikel_id, .... FROM artikel where artikel_id=1 OR artikel_id=4 OR artikel_id=5  

das Resultset wird dann zurückgegeben und weiter an getTable() übergeben.

1. Frage: Kann man diese SQL Query besser lösen? Gibts da nicht einen IN Operator oder so? In der MySQL Doku finde ich leider keine genaue Beschreibung der Where Klausel. zb WHERE artikel_id IN (1,4,5) oder so.

Jetzt habe ich aber ein Problem. Ich möchte getResult(4,5,1) aufrufen und die Records sollen in genau dieser Reihenfolge kommen, damit sie auch in dieser Reihenfolge in der Tabelle stehen. Da ich keine ORDER BY Klausel angebe, kommen sie aber in der Reihenfolge, in der sie eingegeben wurden. Dh. 1,4,5. Ich möchte aber, dass sie in der Reihenfolge 4,5,1 kommen.

Hat jemand eine Idee, wie ich eine ORDER BY Klausel so gestalte, dass meine Anforderung erfüllt ist? Dh. Die Ordnung wäre ja von mir mit einer Liste festgelegt, die nichts mit der Abbildung in der Datenbank zu tun hat.

mfg
  frafu