|
Publicité ' | |||||||||||||||||||||||
|
|
#1 | ||||
|
Invité de passage
![]() Inscription : juillet 2009 Messages : 31 ![]() |
Bonjour, je suis actuellement en train de développer un moteur de recherche et j'ai passé l'après-midi à programmé une commande SQL permettant de trier par pertinence mes résultats, ça marche très bien.
Le problème c'est que la recherche se fait actuellement en deux temps, sur deux tables différentes avec les mêmes champs (enfin en ce qui concerne cette commande SQL précisément), j'avais fait un while() en PHP et j'affichais les résultats d'une table puis de l'autre. Je viens de réaliser que c'était pas du tout la bonne méthode puisque ça coupe complétement cette idée de pertinence le fait de séparer les résultats des deux tables. Me rappelant qu'on pouvait joindre des tables en SQL je me suis renseigné (j'ai encore jamais appliqué de jointure, j'en avais pas eu besoin jusque là), mais ça bug, ça ne marche pas du tout... Je m'en remet donc à vous après avoir longuement chercher une solution, mais sans y arriver... (La commande SQL n'est ici pas dynamique puisque c'est le résultat d'un echo() - sinon c'est illisible pour vous - mais l'idée est là) Commande qui marche: Code :
Code :
Merci beaucoup pour votre aide |
||||
|
00
|
|
|
#2 |
![]() ![]() Vincent Inscription : juillet 2005 Messages : 14 929 ![]() |
Ce n'est pas une jointure qu'il te faut mais une union.
Une jointure sert a croiser des tables qui ont des données communes. |
|
|
00
|
|
|
#3 | |
|
Invité de passage
![]() Inscription : juillet 2009 Messages : 31 ![]() |
Citation:
Code :
(SELECT (title LIKE '%super smash%') as found_exact, ( (title LIKE '%super%') + (title LIKE '%smash%') ) AS found_count, id, title, description, rate, preview, genre, type, file_size, vote_up, vote_down, uploader FROM directlink WHERE (title LIKE '%super%' OR title LIKE '%smash%') AND (genre = 'game') ORDER BY found_exact DESC, found_count DESC, (vote_up-vote_down) DESC LIMIT 50) UNION [ALL] (SELECT (title LIKE '%super smash%') as found_exact, ( (title LIKE '%super%') + (title LIKE '%smash%') ) AS found_count, id, title, description, rate, preview, genre, type, file_size, vote_up, vote_down, uploader FROM filehosting WHERE (title LIKE '%super%' OR title LIKE '%smash%') AND (genre = 'game') ORDER BY found_exact DESC, found_count DESC, (vote_up-vote_down) DESC LIMIT 50); |
|
|
00
|
|
|
#4 |
|
Invité de passage
![]() Inscription : juillet 2009 Messages : 31 ![]() |
Après quelques corrections évidentes (ORDER BY en repeat ^^) mon script marche apparemment, je renverais un message s'il y a encore un bug visible, merci beaucoup.
|
|
00
|
Copyright © 2000-2012 - www.developpez.com