order by mit Ausnahme (distinct Funktion)

sandroP

Erfahrenes Mitglied
Hallo,

ich habe ein Auswahlfeld welches nach Alphabet sortiert wird.
Nun will ich aber, dass "egal" trotzdem vor "a" kommt. also so.

jetzt:
Allensbach
egal
Meersburg
...

so solls sein:
egal
Allensbach
Meersburg

Das ist der Aktuelle Code-Teil:

PHP:
<?php
include "PASSWORT";
$abfrage = "SELECT DISTINCT `aort` FROM `gastgeber` ORDER BY `aort` ASC";
$ergebnis = mysql_query($abfrage);
    
echo '<select size="1" name="ort" style="color:rgb(115,80,48); background-color:rgb(254,254,182);">';
    
while($row = mysql_fetch_object($ergebnis)){
$aort = $row->aort;
echo '<option value="'.$aort.'">'.$aort.'</option><br>';
}
    
echo ' </select>';
?>

Hat mir jemand eine Idee?
 
SELECT * FROM gastgeber WHERE aort LIKE egal
UNION
SELECT DISTINCT `aort` FROM `gastgeber` ORDER BY `aort` ASC

Oder du legst dir eine eigene Tabelle an wo du die Ordnungskriterien in irgendeiner Art definierst:
1;egal
2;AOrt
3;COrt
und dann nach den Zahlen sortieren?

Alles nicht toll aber ich wüßte sonst auch nicht wie.
 
Hi

Meine Vorschläge:
Entweder so wie der erste Vorschlag von zeja. Wobei im zweiten Select das egal ausgelassen werden müsste, sonst taucht es 2 mal auf (Where-Clause fehlt)

oder

Du packst das egal in Sonderzeichen z.B. Klammern. Dann sollte es bei der Sortierung als erstes auftauchen
 
Hallo,

das mit dem UNION dürfte nicht funktionieren, da eine UNION-Abfrage ein SORT und DISTINCT impliziert.

Da wäre es einfacher, ein Sortierungskennzeichen in die Tabelle aufzunehmen.

Oder, ich weiß nicht ob es bei MySQL auch funktioniert, bei Oracle kann man das über ein INLINE-View erledigen.

Code:
SELECT * FROM (
  SELECT -1 lfd_nr, 'egal' aort FROM dual
   UNION
  SELECT 1 lfd_nr, aort FROM gastgeber
   WHERE aort != 'egal') inline_view
 ORDER BY lfd_nr ASC, aort ASC
 
Zurück