Frank: MySQL Sortierung

Beitrag lesen

Hallo Norbert,

ich sag da nur tausend Dank, die ganze Sache läuft ohne Probleme.
Hab ans Ende die NOT LIKES wieder eingefügt und den Rest noch nach lname sortieren lassen - suuuuper.

$query = "
select '1' as SortField, lname, fname
from members
where lname like 'M%'
union
select '2', lname, fname
from members
where lname like 'S%'
union
select concat('3', lname), lname, fname
from members
where lname not like 'M%'
and lname not like 'S%'
order by SortField,lname
";

Ein letzte Frage noch:
Wenn ich jetzt mehr als zwei Buchstaben (nicht nur M und S) als "Vorsortierung" angeben will, muss ich dann einfach noch
mehrere

union
select '[X]', lname, fname
from members
where lname like '[Y]%'

und die Anzahl der unions+1 ins Concat setzten? So:

union
select concat('[Anzahl union+1]', lname), lname, fname

Am liebsten würde ich die "Vorsortierung" in einem Array Speichern und das dann Abarbeiten:

$array_vorsort=array("M","S","E","G");

for($x=0;$x<count($array_vorsort);$x++)
{
$vorsort1 .= "select '".$x."' as SortField, lname, fname where lname like '".$array_vorsort[$x]."%' union";
$vorsort2 .= "lname not like '".$array_vorsort[$x]."%%' and";
}

... und dann irgendwie so:

$concat=$x+1;

$query = "
$vorsort1
select concat('$concat', lname), lname, fname
from members
where
$vorsort2
order by SortField,lname
";

...leider klappt meine Version nicht!

Ich sag nochmal vielen, vielen Dank - hätte nie gedacht, dass man das irgendwie lösen kann und ich schon garnicht ...

Gruss Frank