Requete SQL avec OR et AND

Invité
Invité n'ayant pas de compte PHPfrance

07 juin 2005, 08:40

Bonjour à tous,

Je souhaite mettre en place une recherche avancée sur une base sql mais je me heurte à un probleme avec ma requette...

Pour simplifier on va dire que ma requette comporte deux parametres : les champs ou l'on doit rechercher le mot et un champs qui doit comporter une certaine valeur...

Ainsi la requette sql aurait telle forme dans le cas ou ma recherche se fasse sur un seul champs :
SELECT * FROM table WHERE mot LIKE '%colone1%' AND resp = 'colone10"
Celle ci fontionne donc parfaitement...

Par contre si ma recherche se fait sur plusieurs champs la requete devra prendre cette forme :
SELECT * FROM table WHERE mot LIKE '%colone1%' OR mot LIKE '%colone2%' AND resp = 'colone2"
Et la la requete ne fonctionne plus...

Je me demande donc comment détourner le probleme, j'espère avoir été clair, merci de votre aide.

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 13231 Messages

07 juin 2005, 09:06

Code : Tout sélectionner

SELECT * FROM table WHERE (mot LIKE '%colone1%' OR mot LIKE '%colone2%') AND resp = 'colone2"

Sinon, ta requete ne va fonctionner que si

Code : Tout sélectionner

mot LIKE '%colone2%') AND resp = 'colone2"
Alors que en mettant les parenthèses, il va chercher les postulats qui se trouvent autour de ton OR et si une des conditions est respectée, il va comparer avec le postulat à droite du AND
Connaître son ignorance est la meilleure part de la connaissance
Pour un code lisible : n'hésitez pas à sauter des lignes et indenter

twitter - site perso - Github - Zend Certified Engineer

mig
Petit nouveau ! | 2 Messages

07 juin 2005, 10:27

Super merci beaucoup...

Je n'avais pas pensé aux parenthèses :oops: c'etait pourtant logique...

Encore merci pour ta réponse rapide, ma fonction recherche avancée fonctionne parfaitement 8) :wink: