PHP Forum

PHP Forum (http://www.selfphp.de/forum/index.php)
-   MySQLi/PDO/(MySQL) (http://www.selfphp.de/forum/forumdisplay.php?f=22)
-   -   Sortieren einer MySQL-Abfrage mit Bedingung (http://www.selfphp.de/forum/showthread.php?t=13653)

Stanley 06.06.2006 21:00:04

Sortieren einer MySQL-Abfrage mit Bedingung
 
Hallo,
vielleicht kann mir jemand helfen und einen Hinweis geben, wie ich folgende Aufgabe lösen kann:

Ich habe eine mysql-Tabelle, in der gibt es in jedem Datensatz zwei Adressen, also plz1, ort1, str1, plz2, ort2, str2 usw.
Dazu gibt es noch ein Feld (post), in dem gespeichert wird, ob die Post an die Adresse 1 oder 2 geschickt werden soll.

Jetzt soll ich mit php eine Abfrage basteln, die die Daten für den Versand liefert und sie gleichzeitig nach PLZ sortiert.
Wenn ich einfach schreibe
sql="select * from ADR order by plz1, plz2",
dann werden die Adressen, die aus plz2, ort2 bestehen, nicht richtig einsortiert, sondern dorthin, wo plz1 hingehören würde.
Kann man überhaupt im Sortierkriterium eine Bedingung einbauen
(so in etwa: order by (wenn post=1, dann plz1, sonst plz2)?

Oder geht das nur irgendwie ganz anders (mit Arrays?)?

Für alle sachdienlichen Hinweise besten Dank im Voraus.
Stanley

Stanley 06.06.2006 22:04:13

AW: Sortieren einer MySQL-Abfrage mit Bedingung
 
Falls es jemanden interessieren sollte,
ich habe die Aufgabe wie folgt gelöst:
$sql = "
select *,
if (post=1,plz1,plz2) as postplz,
if (post=1,ort1,ort2) as postort
from ADR
order by postplz, postort, nachname
";

Das heißt, ich sortiere nicht mit einer Bedingung, sondern nach einem festen Wert, der jedoch in der Abfrage erstellt wird (postplz und postort), und zwar in Abhängigkeit davon, was im Feld post steht (1 oder 2).

Sehr einfach, wenn man weiß, dass die Abfrage richtig berechnete Felder enthalten kann und nicht nur die Felder der Tabelle.

Stanley


Alle Zeitangaben in WEZ +2. Es ist jetzt 13:44:39 Uhr.

Powered by vBulletin® Version 3.8.3 (Deutsch)
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.