Bonjour,
J'ai un problème pour concevoir une requete sql qui permet d'effectuer une recherche dans un annuaire sous MYSQL.
Voici le but de la requete:
retrouver tous les "sites" qui répondent au moins a l'une de ces regles
l'url contient "mot clé"
le nom du site contient "mot clé"
la rubrique du site contient "mot clé"
la rubrique pére contient "mot clé".
Comme vous le devinez, j'ai une table
site avec comme champ: id,id_rubrique,url,nom
et une table rubrique : id,id_parent,nom (si id_parent=-1 alors la rubrique n'est pas une sous rubrique).
Pour le moment, j'ai la requete suivante:
Cela marche tres bien sauf pour un cas:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 select * from site,rubrique rub1,rubrique rub2 where ((url like '%mot_clé%') OR (site.nom like '%mot_clé%') OR (rub1.nom like '%mot_clé%') OR (rub2.nom like '%mot_clé%')) and rub1.id=site.id_rub and rub1.id_parent=rub2.id order by site.nom asc
Si le site par exemple appartient a une rubrique qui a un id_parent=-1 (cas ou le site est situé dans une rubrique et non une sous-rubrique), alors il n'est pas retourné. par contre, si le site appartient bien à une sous-rubrique, ca marche.
Exemple avec des tuples:
un_site (id=1,id_rubrique='1' url='test',nom='ok')
une_rubrique (id=1,id_parent=2,nom='enfant_test')
une_rubrique (id=2,id_parent=-1,nom='parent_test')
alors ma requete me retourne bien un_site.
Par contre, si j'ai :
un_site (id=1,id_rubrique='3' url='test',nom='ok')
une_rubrique (id=3,id_parent=-1,nom='parent2_test')
alors un_site n'est pas renvoyé.
Si vous pouviez m'aider a trouver la syntaxe correcte, je vous en serai gré
Merci d'avance!
Partager