PHP Forum

PHP Forum (http://www.selfphp.de/forum/index.php)
-   MySQLi/PDO/(MySQL) (http://www.selfphp.de/forum/forumdisplay.php?f=22)
-   -   Ausgabe mit ORDER BY passt nicht... (http://www.selfphp.de/forum/showthread.php?t=13884)

mayer 02.07.2006 14:59:46

Ausgabe mit ORDER BY passt nicht...
 
Hallo,

ich habe ein Problem mit der Ausgabe einer mySQL-Abfrage, speziell beim Sortieren der Ausgabe:


Datenbank "kunden" mit Kundendaten
abgefragt wird per Formular das Bundesland
ausgegeben werden sollen dann aus dem gewählten Bundesland die Kunden mit: Name, Strasse, Stadt, Bundesland, Telefon

Diese Ausgabe soll dann geordnet werden:
1. zuerst sollen alle Einträge angezeigt werden mit Priorität 1, alphabetisch nach Namen
2. und dann alle anderen (Priorität 2) geordnet alphabetisch nach Städten

Ich hab´s probiert mit (Auszug)

PHP-Code:

$anfrage mysql_query("SELECT Name, Strasse,Stadt, Bundesland, Telefon FROM kunden WHERE Bundesland = '$Bundesland' ORDER BY Priority = '1' DESC, City"); 

Die Ausgabe zeigt tatsächlich alle Kunden mit Priorität 1 als erstes an, allerdings nicht geordnet alphabetisch nach Namen, sondern alphabetisch nach Stadt (so wie Order Kriterium 2). Alle anderen mit Priorität 2 werden, wie gewünscht, dann nach Städten geordnet.

Da muss ich doch bestimmt das erste ORDER Kriterium mit der Priorität 1 irgendwie verknüfen mit einer zusätzlichen ORDER nach Namen, oder?

Kann einem anfänger mal einer auf die Sprünge helfen, wie so was geht bzw. wie die o.a. Ausgabe professionell lautet? Danke.

mayer

Andes 02.07.2006 15:58:49

AW: Ausgabe mit ORDER BY passt nicht...
 
Dies müsste dir weiter helfen.
order by name asc, stadt asc

xabbuh 02.07.2006 17:27:03

AW: Ausgabe mit ORDER BY passt nicht...
 
Bestimme mithilfe einer IF-Abfrage, welche Spalte als sekundäres Sortierkriterium verwendet wird:
Code:

SELECT Name, Strasse, Stadt, Bundesland, Telefon, IF(Priority = 1, Name, Stadt) AS sortFlag FROM kunden ORDER BY Priority, Sortflag;

Andes 02.07.2006 17:49:21

AW: Ausgabe mit ORDER BY passt nicht...
 
Warum so kompliziert?
PHP-Code:

SELECT NameStrasseStadtBundeslandTelefon  FROM kunden ORDER BY NAME ASCSTADT ASC

Primär ist immer das was als erstes hinter ORDER steht und sekundär was sich anschließt.

xabbuh 02.07.2006 19:39:31

AW: Ausgabe mit ORDER BY passt nicht...
 
Diese Unterscheidung muss vorgenommen werden, wenn innerhalb der Prioritäten unterschiedliche sekundäre Sortierkriterien gelten. In deiner ORDER BY-Klausel fließt die Sortierung nach der Priorität gar nicht mit ein.

Andes 03.07.2006 00:39:08

AW: Ausgabe mit ORDER BY passt nicht...
 
Alles klar, da hab ich ja schön auf der Leitung gestanden.


Alle Zeitangaben in WEZ +2. Es ist jetzt 13:00:38 Uhr.

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