60734
Sep 01, 2008, updated at Sep 03, 2008 at 12:23:30 (UTC)
3670
4
0
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
Please also mark the comments that contributed to the solution of the article
Content-Key: 95824
Url: https://administrator.de/contentid/95824
Printed on: April 25, 2024 at 17:04 o'clock
4 Comments
Latest comment
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