Page 1 sur 1

3 "AND" avec WHERE ?

Posté : 25 sept. 2006, 23:44
par lexarino
Bonjour,

Je suis débutant en SQL...
Je développe un moteur de recherche pas bien compliqué :

3 conditions :
- Catégorie
- Sous catégorie
- Département

Afin de limiter le nombre de résultats j'aurais souhaité pouvoir appliquer ces 3 conditions pour afficher les résultats correspondant...

Or : il me semble que plus d'un AND dans l'instruction SQL après WHERE sont impossible :

"SELECT * FROM assos WHERE categorie = 'valeur1' AND soucat = 'valeur2' AND departement = 'valeur3' ORDER BY 'departement' ASC"

Comment faire ??!

Merci à vous

Posté : 25 sept. 2006, 23:53
par Truc
Salut,
Pourquoi dis tu que :
plus d'un AND dans l'instruction SQL après WHERE sont impossible
:-k

C'est tout a fait possible... ce qui n'as pas de sens est de placer plusieurs AND qui portent sur un même champ mais dont le contenu devrait être différent, ex :

Code : Tout sélectionner

SELECT ... FROM ... WHERE champ = "machin" AND champ = "bidule"
puisqu'un champ ne peut contnir à la fois "machin" et "bidue"

Posté : 26 sept. 2006, 08:06
par Cyrano
Ce qu'il faut savoir, et c'est la logique même, c'est que plus tu rajoutes de conditions de tri, plus le résultat sera restreint. Il peut donc arriver que toutes les conditions ne puissent pas être réunies et que la requête ne retourne rien, ce qui ne signifie nullement une erreur.

Tu peux donc avoir des alternatives. Par exemple pour reprendre l'exemple de Truc :

Code : Tout sélectionner

SELECT ... FROM ... WHERE champ1 = "machin" AND (champ2 = "bidule" OR champ2 = "chose")
Notes bien les parenthèses : deux conditions doivent impérativement être vérifiées, mais la deuxième présente elle-même deux possibilités qui sont entre les parenthèses : donc la deuxième condition veut que "champ2" vale soit "bidule" soit "chose", mais pour l'un comme pour l'autre, "champ1" devra de toutes façons valoir "machin"