Mailinglisten-Archive |
> Date sent: Wed, 13 Dec 2000 11:00:50 +0100
> From: Christian Dassow <c.dassow_(at)_webelefant.de>
> > select titel from filme where titel like '%$teilwort%' order by titel;
> Problem ist: So wird alphabetisch sortiert. Die Sortierung soll aber beginnen
> mit den Datensaetzen, die mit dem Suchwort beginnen! Erst wenn es keine
> Datensaetze mehr mit dem Suchwort am Anfang gibt, soll weiter alphabetisch
> sortiert werden.
Dann muß ich raten:
select titel, (LOCATE('$teilwort',titel)>0) as fit
from filme
order by (fit desc ,titel asc);
Selbst wenn dieses ungetestete SQL-Statement nicht
laufen sollte, hoffe ich, daß dir die Idee weiterhilft:
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.
Patrick Bierans / LYNET Kommunikation AG/ pbierans_(at)_lynet.de
---------------------------------------------------------------
Das Internet-Systemhaus fuer Multimedia- und Netzwerkloesungen.
Zentrale Luebeck: Fon +49-451-6131-0, Fax -333
Niederlassung Hamburg: Fon +49-40-65738-0, Fax -333
---
*** Weitere Infos zur Mailingliste und MySQL unter http://www.4t2.com/mysql
php::bar PHP Wiki - Listenarchive