Forum Doku Wiki Blog

Forumsarchiv 2005, November
mysql order by

archivierte Beiträge lesen

  1. (DATENBANK) mysql order by von FraFu, 02. 11. 2005, 14:51

mysql order by

Der folgende Beitrag wurde am 02. 11. 2005, 14:51 Uhr von FraFu veröffentlicht.

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

mysql order by NACHTRAG

Der folgende Beitrag wurde am 02. 11. 2005, 14:52 Uhr von FraFu veröffentlicht.

Hallo!

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

Hier handelt es sich um PHP Funktionen.

mfg
  frafu

mysql order by NACHTRAG

Der folgende Beitrag wurde am 02. 11. 2005, 15:07 Uhr von Joah. veröffentlicht.

Hi,

SELECT * FROM tabelle WHERE id IN (4,5,1) sollte doch funktionieren. Kommen die Ergebnisse hier vielleicht schon vorsortiert raus wenn du ORDER BY weglässt?

Gruß
Joah.

mysql order by

Der folgende Beitrag wurde am 02. 11. 2005, 15:09 Uhr von Axel Richter veröffentlicht.

Hallo,
>
> Tabelle:
> artikel
>   artikel_id - primarykey, autoincrement

> 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.

http://dev.mysql.com/doc/refman/4.1/en/comparison-operators.html
>
>
> 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.

http://aktuell.de.selfhtml.org/tippstricks/datenbanken/sqlsort/index.htm

http://dev.mysql.com/doc/refman/5.0/en/string-functions.html

viele Grüße

Axel

mysql order by

Der folgende Beitrag wurde am 02. 11. 2005, 16:20 Uhr von FraFu veröffentlicht.

Hallo!

>
http://aktuell.de.selfhtml.org/tippstricks/datenbanken/sqlsort/index.htm
>

Danke! Damit hab ichs lösen können.

Jetzt hab ich aber eine halbe Stunde einen Fehler gesucht. Und zwar hab ich geschrieben:
SELECT FIELD (article_id, 1, 2, 3) .....
Der Blank zwischen FIELD und ( beschert einem einen hübschen SQL Error mit einer nichtssagenden Fehlermeldung.
Führe ich dasselbe aber mit phpmyadmin aus, dann funktioniert die Abfrage! phpmyadmin dürfte den Querystring offenbar formatieren.

mfg
  frafu

© 1998-2013 SELFHTMLImpressumSoftware: Classic Forum 3.4