Mailinglisten-Archive |
>select titel, (LOCATE('$teilwort',titel)>0) as fit
>from filme
>order by (fit desc ,titel asc);
>
>Wir erzeugen ein Feld "fit" per boolschen Ausdruck,
>daß entweder 0 oder 1 ist. Mit "order by fit desc"
>zeigen wir zuerst alle, wo fit=1 und dann wo fit=0
>ist. Für jede "fit"-Gruppe sortieren wir dann die
>Titel ganz normal, wobei fit=1 ist; fit ist wahr,
>wenn das Teilwort im titel vorhanden ist.
>LOCATE liefert die Position, oder 0. Willst du alles
>einschränken, so kannst du "limit $zahl" hinterhängen.
Sogar noch besser, denn LOCATE gibt die Position von $teilwort zurück.
Leide klappt dann das mit der sortierung wieder nicht, denn der beste
Treffer gibt 1 der nächstbeste 2 und gar keiner 0. Dan man aber die ohne
$teilwort nicht braucht, kann man:
select titel, LOCATE('$teilwort',titel) as fit
from filme
order by (fit ASC,titel asc)
WHERE fit > 0;
Gruß
Falk
--
Fun is irrelevant ... http://www.totenkomisch.de/
Comedy-Events in Ihrer Nähe! --- http://comedy.cogitatio.de/
---
*** Weitere Infos zur Mailingliste und MySQL unter http://www.4t2.com/mysql
php::bar PHP Wiki - Listenarchive