60734
Goto Top

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

Content-Key: 95824

Url: https://administrator.de/contentid/95824

Printed on: April 18, 2024 at 05:04 o'clock

Member: masterG
masterG Sep 01, 2008 at 17:52:30 (UTC)
Goto Top
Klar entweder mit:
ORDER BY DESC
oder
ORDER BY ASC
Member: filippg
filippg Sep 01, 2008 at 19:47:05 (UTC)
Goto Top
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
Mitglied: 60734
60734 Sep 02, 2008 at 05:51:00 (UTC)
Goto Top
Ok, danke!

Hat funktioniert!

gruss markus
Member: masterG
masterG Sep 03, 2008 at 12:23:28 (UTC)
Goto Top
Zitat von @60734:
Ok, danke!

Hat funktioniert!

gruss markus

Dann ist's gut!