Page 1 sur 1

resultats inattendus requete

Posté : 20 juin 2007, 13:36
par Invité
Bonjour à tous,

J'ai créé une requete pour rechercher un mot dans certains champs d'une table produits.
Par exemple rechercher le mot 'hozier' donne:
SELECT * FROM produits WHERE titreSousTitre LIKE '%hozier%' OR themes LIKE '%hozier%' OR auteur LIKE '%hozier%' OR motsClef LIKE '%hozier%'
ça fonctionne bien.

Pour chaque enregistrement, j'ai rajouté un champ 'trash' pour la corbeille, type tinyint(1) qui vaut 0 par défaut. Quand on met un produit dans la corbeille, son champ 'trash' passe de 0 à 1.

Mon problème:
J'essaye maintenant d'afficher les produits qui contiennent le mot 'hozier' et qui ne sont pas dans la corbeille (trash=0). ça me donne:
SELECT * FROM produits WHERE trash = 0 AND titreSousTitre LIKE '%hozier%' OR themes LIKE '%hozier%' OR auteur LIKE '%hozier%' OR motsClef LIKE '%hozier%'
pas d'erreur, mais j'ai des trash=1 dans mon résultat, alors que je ne le demande pas.

Pareil quand j'essaye :
SELECT * FROM produits WHERE  titreSousTitre LIKE '%hozier%' OR themes LIKE '%hozier%' OR auteur LIKE '%hozier%' OR motsClef LIKE '%hozier%'  AND trash = 0
pas d'erreur, mais j'ai des trash=1 dans mon résultat, alors que je ne le demande pas.

Qu'ai-je mal fait dans ma requete?

Posté : 20 juin 2007, 13:40
par Cyrano
Il manquerait une paire de parenthèses :

Code : Tout sélectionner

SELECT * FROM produits WHERE ( titreSousTitre LIKE '%hozier%' OR themes LIKE '%hozier%' OR auteur LIKE '%hozier%' OR motsClef LIKE '%hozier%' ) AND trash = 0