[PHP] SQL statement die sorteerd op het beste resultaat

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Ik ben op zoek naar een SQL.
Bij een statement kan je een "ORDER BY" meegeven zodat hij sorteerd op kolom X

code:
1
$sql = "SELECT * FROM tabel ORDER BY kolom_naam ASC"


Hiermee sorteerd hij dus van laag naar hoog.....

Maar als ik nu een zoekfunctie bak. Die uit de database een waarde haalt en dan moet gaan sorteren op het beste resultaat.

code:
1
2
3
4
$variabele = "BLAAT";
$sql = "SELECT * FROM tabel WHERE kolom1 LIKE '%$variabele%' 
                                                      OR kolom2 LIKE '%$variabele%'
                                                      OR kolom3 LIKE '%$variabele%'";


Hoe kan ik de uitslag dus op volgorde van beste resultaat terug krijgen

Acties:
  • 0 Henk 'm!

Verwijderd

Als het om heel simpele velden gaat waarin de zoekwaarde maar 1 keer voorkomt kan je iets doen met de returnwaarden van bijvoorbeeld Regexp, optellen bij elkaar en sorteren van hoog naar laag.
Als het ook nog eens gaat om het aantal keer dat het zoekwoord per veld voorkomt denk ik dat het onmogelijk is om dat in de query geheel op te lossen.

Kijk als het om mysql gaat ook een naar fulltext search dat kan in het tweede geval wel een makkelijke oplossing zijn.

Acties:
  • 0 Henk 'm!

  • Janoz
  • Registratie: Oktober 2000
  • Laatst online: 13-09 09:39

Janoz

Moderator Devschuur®

!litemod

Definieer eerst eens fatsoenlijk voor jezelf wat wordt verstaan onder 'beste resultaat'. Waarom is resultaat A beter dan resultaat B? Als je die definitie hebt is niet zo heel moeilijk meer om deze om te bouwen naar de juiste order by clausule.

Ken Thompson's famous line from V6 UNIX is equaly applicable to this post:
'You are not expected to understand this'


Acties:
  • 0 Henk 'm!

  • Glimi
  • Registratie: Augustus 2000
  • Niet online

Glimi

Designer Drugs

(overleden)
http://www.mysql.com/doc/en/Fulltext_Search.html
When MATCH() is used in a WHERE clause (see example above) the rows returned are automatically sorted with highest relevance first. Relevance values are non-negative floating-point numbers. Zero relevance means no similarity. Relevance is computed based on the number of words in the row, the number of unique words in that row, the total number of words in the collection, and the number of documents (rows) that contain a particular word.
FULLTEXT gaan gebruiken dus :)

Acties:
  • 0 Henk 'm!

  • Willem2
  • Registratie: Oktober 2000
  • Laatst online: 05-09 07:32

Willem2

Ω is futile

http://www.mysql.com/doc/en/Fulltext_Search.html

ik denk dat dit is wat jij wilt!

en nee, ik houd niet van voetbal... :)