Page 1 sur 1
requete avec des mots séparés par une virgule et bdd
Posté : 09 oct. 2011, 16:28
par damien153
Bonjour à tous,
Dans une base sql, j'ai un champ contenant des mots séparés par une virgule:
ex: toto,damien, leon
Je voudrais faire une requete sur un champ nommé "titre" et recherché les id qui contiennent soit les 3 mots soit deux ou un seul des trois mots.
Bien sur il se peut qu'il y en ait plus que que trois.
Quelqu'un a une idée comment faire ça ?
Merci de votre aide.
Re: requete avec des mots séparés par une virgule et bdd
Posté : 09 oct. 2011, 18:39
par Cyrano
Utilise l'opérateur LIKE dans ta clause WHERE, un petit coup d’œil dans
la documentation devrait t'éclairer un peu
Re: requete avec des mots séparés par une virgule et bdd
Posté : 09 oct. 2011, 18:54
par damien153
Bonjour Cyrano,
je vois bien la requete type:
Select id from table WHERE titre LIKE '%toto% AND LIKE '%damien%' AND LIKE '%leon%'
Mais:
1- Je ne vois pas comment récuperer les 3 mots séparement (peut etre un array sur ce champ ?)
et
2- Comment prendre en compte:
les 2 autres requetes dans le cas ou un ou deux des autres mots ne sont pas présents dans aucun autre "titre":
Select id from table WHERE titre LIKE '%toto% AND LIKE '%damien%'
Select id from table WHERE titre LIKE '%toto%
Merci de ton aide.
Re: requete avec des mots séparés par une virgule et bdd
Posté : 09 oct. 2011, 19:00
par Cyrano
Remplace les « AND » par « OR » et tu auras les résultats qu'il y ait un seul, deux, ou les trois (ou quatre ou davantage bien entendu) des mots recherchés.
Par contre pour récupérer les mots individuellement, je ne saisis pas exactement l'idée de ce que tu veux obtenir au juste
Re: requete avec des mots séparés par une virgule et bdd
Posté : 09 oct. 2011, 19:14
par damien153
"Par contre pour récupérer les mots individuellement, je ne saisis pas exactement l'idée de ce que tu veux obtenir au juste"
En fait dans ma base, j'ai un champ qui s'appelle mot et qui contient cette valeur:
toto,damien,leon
or si je mets cette valeur dans une variable, j'obtiens: "toto,damien,leon" et pas "toto" , "damien" et "leon" donc aprés pour former ma requete, j'aurai ça:
Select id from table WHERE titre LIKE '%toto,damien,leon%' et pas ça:
Select id from table WHERE titre LIKE '%toto% AND LIKE '%damien%' AND LIKE '%leon%'
Re: requete avec des mots séparés par une virgule et bdd
Posté : 09 oct. 2011, 19:20
par Cyrano
regarde la doc PHP sur explode(), ça devrait t'aider à résoudre ça pour construire dynamiquement ta requête.
Re: requete avec des mots séparés par une virgule et bdd
Posté : 09 oct. 2011, 19:45
par moogli
Perso je penche sur un problème de conception de la base, si tu nous explique le fonctionnement peut être que l'on pourra t'aider une solution plus simple et performante
@+