Bonjour j'ai un souci avec une requête select je vous la présente
SELECT * FROM compartiment WHERE IDACTIVITEPROPRIETAIRE=$idActivite AND ETATCOMPARTIMENT='VIDE' AND TYPECONTENEURACCEPTE='BOTH'OR TYPECONTENEURACCEPTE='BOTH'
la requête me retourne bien des résultats mais ceux ci ne respectent pas toujours les conditions
IDACTIVITEPROPRIETAIRE=$idActivite AND ETATCOMPARTIMENT='VIDE'
Je suis presque sur que le problème vient de la gestion du AND et du OR Je suis à cours d'idée.
Selon moi ton problème vient d'un manque de parenthèse au niveau de la clause WHERE. Il me semble évident que tu souhaites préciser IDACTIVITEPROPRIETAIRE tu n'as donc pas besoin de parenthèse ici mais après que souhaites-tu réellement ? Tu ne peux pas avoir un AND et un OR avec la même condition (TYPECONTENEURACCEPTE = 'BOTH') et espérer avoir un résultat probant sans utiliser des parenthèses pour bien spécifier ce que tu souhaites.
bONSOIR Barilo merci pour ta prompte réaction j'ai essayé de mettre des parenthèses mais le résultat n'est pas plus satisfaisant
SELECT * FROM compartiment WHERE IDACTIVITEPROPRIETAIRE=15 AND ETATCOMPARTIMENT='ENTAME' AND (TYPECONTENEURACCEPTE='BOTH'OR TYPECONTENEURACCEPTE='BOTH')
La requête de ton premier message correspond à ceci :
SELECT *
FROM compartiment
WHERE
(
IDACTIVITEPROPRIETAIRE=$idActivite
AND ETATCOMPARTIMENT='VIDE'
AND TYPECONTENEURACCEPTE='BOTH'
)
OR TYPECONTENEURACCEPTE='BOTH'
La requête de ton deuxième message a deux conditions identiques dans les parenthèses ... cela ne sert donc à rien ...
Saurais-tu dire en français ce que tu attends de ta requête ?
Genre : je veux la liste des compartiments pour une activité donnée, à l'état "vide" qui accepte les conteneurs "both"
Bonjour Benzouye désolé c'est vrai que je n'ai pas remarqué la boulette avec "both"
En français je dirai: je veux la liste des compartiments pour une activité donnée, à l'état "vide" qui accepte les conteneurs "BOTH" et les conteneurs "CHRONO"
je veux la liste des compartiments pour une activité donnée ET à l'état "vide" ET qui accepte les conteneurs "BOTH" OU "CHRONO"
Du coup la requête serait :
SELECT *
FROM compartiment
WHERE
IDACTIVITEPROPRIETAIRE=$idActivite
AND ETATCOMPARTIMENT='VIDE'
AND (
TYPECONTENEURACCEPTE='BOTH'
OR TYPECONTENEURACCEPTE='CHRONO'
)
× Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
× Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
la requête me retourne bien des résultats mais ceux ci ne respectent pas toujours les conditions