Page 1 sur 1

problème de WHERE dans une requete

Posté : 20 juin 2006, 17:33
par VaN
Bonjour à tous,

J'ai une table articles contenant... des articles. Ces articles sont différenciés par un id_categorie. Trois de mes categories portent l'id 5, 6 et 13.

J'aimerais extraire tous les articles de ces 3 categories, mais ma requete ne marche pas.
"SELECT *
						FROM articles
						WHERE id_categorie = '5'
						AND id_categorie = '6'
						AND id_categorie = '13'";
Mais lorsque je selectionne une seule categorie, cela marche très bien. La synthaxe de mes AND est fausse ?

Posté : 20 juin 2006, 17:35
par albat
La synthaxe de mes AND est fausse ?
Oui.

On ne peut pas porter à la fois les numéros 5, 6 et 13.
Mais, 5 OU 6 OU 13.

donc... ;)

Posté : 20 juin 2006, 17:37
par zeus
Si je comprend ta modélisation, un article appartient à 1 catégorie, non ?

Dans ta requete, tu veux les articles qui appartiennent à la catégorie 5 ET à la catégorie 6 ET à la catégorie 13 ... :roll: ;)

Pour obtenir la liste des articles appartennant à ces catégories, il faut que tu récupères les articles appartant à la catégorie 5 OU la catégorie 6 ou la catégorie 13

Il existe d'ailleurs une instruction SQL très pratique : IN()

Code : Tout sélectionner

SELECT * FROM articles WHERE id_categorie IN ('5', '6', '13')

Posté : 20 juin 2006, 17:37
par albat
En outre, ton champ id_categorie semble être de type entier.
Ses valeurs n'ont donc pas besoin d'être délimitées par des apostrophes.

Posté : 20 juin 2006, 17:55
par VaN
effectivement, ça marche mieux comme ça : )

Erreur comprise.

et merci à albat pour la correction sur les simple quotes.

Posté : 21 juin 2006, 10:17
par imacus
Bonjour,

Je me permet de répondre car j'ai le même problème.
Le soucis avec IN() c'est qu'il agit comme l'instruction OR sauf que la syntaxe est plus légère et que le temps de traitement est meilleur !

Visiblement la seule solution est de pratiquer le "tri" avec un langage de prog ... snourf moi qui pensait que MySQL allait me tirer de là :cry:

Posté : 21 juin 2006, 10:24
par albat
En quoi cette méthode ne "te tire pas de là" ?

Posté : 21 juin 2006, 11:37
par imacus
Elle ne me tire pas de devoir écrire mon tri en php ! Non pas que j'aime pas ça mais je dois avouer que je suis un peu partisan du moindre effort :oops: