
60734
01.09.2008, aktualisiert am 03.09.2008
mysql suchergebnisse sortieren
hallo,
ich habe für eine private Website eine suche in php programmiert.
Das funktioniert auch soweit auch schon ganz gut, nur mit den Leerzeichen gibt es probleme. Leider.
Und zwar.
Wenn einer einen Begriff eingibt z.B. "administrator forum"
dann würde das skript denn string trennen in "administrator" und "forum"
und die sql abfrage wäre dann SELECT * FROM test WHERE begriffe LIKE "%administrator%" OR begriffe LIKE "%forum%"
und dann zeigt er mir alle Ergebnisse an, die entweder administrator, forum oder beides enthalten. Ich möchte aber,
dass das Skript mir die einträge sortiert, sodass die Zeile, in der beide Begriffe vorkommen zuerst angezeigt wird und net irgendwo zwischendrin.
Kann man das evtl. mit ORDER BY lösen?
Vielen Dank schonmal
ich habe für eine private Website eine suche in php programmiert.
Das funktioniert auch soweit auch schon ganz gut, nur mit den Leerzeichen gibt es probleme. Leider.
Und zwar.
Wenn einer einen Begriff eingibt z.B. "administrator forum"
dann würde das skript denn string trennen in "administrator" und "forum"
und die sql abfrage wäre dann SELECT * FROM test WHERE begriffe LIKE "%administrator%" OR begriffe LIKE "%forum%"
und dann zeigt er mir alle Ergebnisse an, die entweder administrator, forum oder beides enthalten. Ich möchte aber,
dass das Skript mir die einträge sortiert, sodass die Zeile, in der beide Begriffe vorkommen zuerst angezeigt wird und net irgendwo zwischendrin.
Kann man das evtl. mit ORDER BY lösen?
Vielen Dank schonmal
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 95824
Url: https://administrator.de/forum/mysql-suchergebnisse-sortieren-95824.html
Ausgedruckt am: 10.04.2025 um 16:04 Uhr
4 Kommentare
Neuester Kommentar
Hallo,
man kann erst nach dem einen Fragen, dann nach dem anderen, und dann die Ergebnisse zusammenfügen. Aussehen tut das dann so:
SELECT * FROM test WHERE begriffe LIKE "%administrator%" AND begriffe LIKE "%forum%"
UNION
SELECT * FROM test WHERE begriffe LIKE "%administrator%" OR begriffe LIKE "%forum%"
Die ersten Ergebnisse sind dann die in denen beides vorkommt, dann die, die nur eins von beiden haben. Bei MS SQL geht das, bei MySQL sollte das auch funktionieren. Allerdings könnte man vorher nochmal in der Referenz schauen, ob garantiert ist, dass die Ergebnisse nicht wieder verwürfelt werden. Doppelte Zeilen (die aus dem ersten Query erfüllen ja auch alle die Bedingung für den zweiten) dürften bei einem einfachen UNION nicht auftreten (MS SQL).
Gruß
Filipp
man kann erst nach dem einen Fragen, dann nach dem anderen, und dann die Ergebnisse zusammenfügen. Aussehen tut das dann so:
SELECT * FROM test WHERE begriffe LIKE "%administrator%" AND begriffe LIKE "%forum%"
UNION
SELECT * FROM test WHERE begriffe LIKE "%administrator%" OR begriffe LIKE "%forum%"
Die ersten Ergebnisse sind dann die in denen beides vorkommt, dann die, die nur eins von beiden haben. Bei MS SQL geht das, bei MySQL sollte das auch funktionieren. Allerdings könnte man vorher nochmal in der Referenz schauen, ob garantiert ist, dass die Ergebnisse nicht wieder verwürfelt werden. Doppelte Zeilen (die aus dem ersten Query erfüllen ja auch alle die Bedingung für den zweiten) dürften bei einem einfachen UNION nicht auftreten (MS SQL).
Gruß
Filipp