DrDreist Geschrieben 15. Januar 2010 Teilen 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 Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
VaNaTiC Geschrieben 15. Januar 2010 Teilen Geschrieben 15. Januar 2010 Ein Trick mit der Länge der City und Name wäre: order by LENGTH(city), LENGTH(name) Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
DrDreist Geschrieben 15. Januar 2010 Autor Teilen 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?! Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Haschman Geschrieben 15. Januar 2010 Teilen Geschrieben 15. Januar 2010 Ich würde es im code sortieren. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
DrDreist Geschrieben 15. Januar 2010 Autor Teilen 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 ^^ Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.