MySQL-Abfrage mit Array als Sortierkriterim
Heike.
- datenbank
0 Sönke Tesch
Hallo, ich komm' einfach nicht weiter, und dass schon das ganze Wochende.
Mir liegt ein Array vor, z.B. (123, 555, 111), an dieser Sache kann ich auch nichts ändern, ist mir vorgegeben.
Nun muss ich eine Datenbankfrage starten.
SELECT table WHERE spalte='123' OR spalte='555' OR spalte='111' ist leider nicht so sortiert wie im Array.
SELECT table WHERE spalte='123' OR spalte='555' OR spalte='111' ORDER BY (123, 555, 111) wäre toll, funktioniert aber nicht.
Help.
Heike.
Mir liegt ein Array vor, z.B. (123, 555, 111), an dieser Sache kann ich auch nichts ändern, ist mir vorgegeben.
SELECT table WHERE spalte='123' OR spalte='555' OR spalte='111' ORDER BY (123, 555, 111) wäre toll, funktioniert aber nicht.
Du wirst die Daten wohl am besten von Hand (d.h. in Deinem Programm) sortieren müssen. Alternativ kannst Du möglicherweise auch mit case-Klauseln einen rang vorgeben (à la "select *,case spalte when 123 then 1 when 555 then 2 when 111 then 3 end as rang order by rang"). case & Co. sollten in Deiner Datenbank-Anleitung beschrieben sein.
Gruß,
soenk.e
Vielen Dank erstmal.
Hab' mir unter www.mysql.de die Doku durchgelesen, aber so richtig kapiere ich es nicht.
Auch mein Versuche klappen nicht, z.B:
$mysql="SELECT * FROM $mysql_table_news CASE id_gruppe WHEN 2229 THEN 1 WHEN 3314 THEN 2 END AS rang ORDER BY rang";
$mysql="SELECT * FROM $mysql_table_news"; gibt dagegen alle News aus.
?
Heike.
Mir liegt ein Array vor, z.B. (123, 555, 111), an dieser Sache kann ich auch nichts ändern, ist mir vorgegeben.
SELECT table WHERE spalte='123' OR spalte='555' OR spalte='111' ORDER BY (123, 555, 111) wäre toll, funktioniert aber nicht.
Du wirst die Daten wohl am besten von Hand (d.h. in Deinem Programm) sortieren müssen. Alternativ kannst Du möglicherweise auch mit case-Klauseln einen rang vorgeben (à la "select *,case spalte when 123 then 1 when 555 then 2 when 111 then 3 end as rang order by rang"). case & Co. sollten in Deiner Datenbank-Anleitung beschrieben sein.
Gruß,
soenk.e
also soweit bin ich ...
$mysql="SELECT *, CASE WHEN id_gruppe='2229' THEN 1 WHEN id_gruppe='3314' THEN 2 ELSE 3 END AS rang FROM $mysql_table_news WHERE ORDER BY rang";
Funktioniert, Komma muss sein, DANKE soenk.e
Aber leider werden hier alle News ausgegeben, ich möchte aber nur die zur Gruppe gehörigen.
$mysql="SELECT *, CASE WHEN id_gruppe='2229' THEN 1 WHEN id_gruppe='3314' THEN 2 ELSE 3 END AS rang FROM $mysql_table_news WHERE id_gruppe='2229' AND id_gruppe='3314' ORDER BY rang"; Funktioniert leider NICHT, egal wo ich die WHERE-Bedingung einbaue.
Help !
PM
SORRY, AND war falsch, OR muss dastehen.
$mysql="SELECT *, CASE WHEN id_gruppe='2229' THEN 1 WHEN id_gruppe='3314' THEN 2 ELSE 3 END AS rang FROM $mysql_table_news WHERE id_gruppe='2229' OR id_gruppe='3314' ORDER BY rang";
DANKE nochmal soenk.e
Gruß Heike.
SORRY, AND war falsch, OR muss dastehen.
Schön, daß wir drüber geredet haben :)
Gruß,
soenk.e