DrDreist Geschrieben 15. Januar 2010 Geschrieben 15. Januar 2010 Hey, ich hab momentan ein etwas kniffliges Problem. Und zwar hab ich eine Suchfunktion programmiert, die ganz simple eine Datenbank nach allen möglichen Treffern durchsucht. Etwa so was: $sql = "SELECT * FROM table WHERE (name LIKE '%KEY%') or (city LIKE '%KEY')"; Naja wie auch immer. Gehen wir davon aus das ich in meiner Tabelle 5 Datensätze hab, etwa so: Name City chris | Berlin tobi | Berlin andi | Karlsruhe stefi | Berliner caty | Broberlin Eine Suche nach "berlin" würde mir demnach 4 Treffer bringen. Nun möcht ich, das in der Ausgabe immer, der Datensatz, wo der Suchbegriff mit beginnt, immer zu erst kommt und dann die anderen Datensätzen, bei denen der Suchbegriff im Text steht. Also das die Ausgabe der Ergebnisse immer so aussieht: Chris | Berlin Tobi | Berlin Stefi | Berliner .... Caty | Broberlin Hinweis: Die eigentliche DB umfasst mehrere Zigtausend Datensätze und hat deutlich komplexere Relationen als meine 2 Spalten hier ^^ Ich hoffe ich konnte mein Problem gut erklären und danke schon jetzt für eure Ideen. mit freundlichen grüßen
VaNaTiC Geschrieben 15. Januar 2010 Geschrieben 15. Januar 2010 Ein Trick mit der Länge der City und Name wäre: order by LENGTH(city), LENGTH(name)
DrDreist Geschrieben 15. Januar 2010 Autor Geschrieben 15. Januar 2010 Vielen Dank schon mal für die Antwort, für mein gepostetes Beispiel funktioniert das wohl sicher. Alle Berlin Einträge würden dann oben stehen, aller dings würde dann ein Oberlin auch vor einem Berlinale stehen... Ich hab jetzt eine Lösung gefunden, nicht sehr elegant aber es funktioniert wohl. Zunächst eine Abfrage die alle Datensätze erfasst die genau mit dem Such wort anfangen $sql = "SELECT * FROM table WHERE city LIKE 'KEY%'"; und anschließend eine abfrage die alles außer das obere nimmt $sql = "SELECT * FROM table WHERE city LIKE '%KEY%' AND city NOT LIKE 'KEY%' Dann merge ich die die Array und gut... Naja für de Anfang ist es erst mal eine Lösung aber naja. Noch jmd andere Ideen?!
DrDreist Geschrieben 15. Januar 2010 Autor Geschrieben 15. Januar 2010 Mhh also mir jetzt nen eigens für dieses Problem nen Sortieralghoritmus zu schreiben ?! Bisschen viel overhead, findest du nicht Ich kann mir net vorstellen, das ich der einzigste mit diesem Problem bin ^^
Empfohlene Beiträge
Erstelle ein Benutzerkonto oder melde Dich an, um zu kommentieren
Du musst ein Benutzerkonto haben, um einen Kommentar verfassen zu können
Benutzerkonto erstellen
Neues Benutzerkonto für unsere Community erstellen. Es ist einfach!
Neues Benutzerkonto erstellenAnmelden
Du hast bereits ein Benutzerkonto? Melde Dich hier an.
Jetzt anmelden