Bonjour,
A ce qu'a précisé @SergioMaster (Structure de la table), je rajoute qu'un jeu d'essai avec le résultat attendu peut aussi être utile et lever des ambiguïtés dans les propos formulant la demande.

Envoyé par
chatour
Les deux conditions doivent être satisfaites ,pas l'une OU l'autre, donc OR ne convient pas .
Je crois qu'il faut une requête imbriquée.
Le OR qui n'est pas un OU EXCLUSIF couvre le fait que les 2 conditions sont satisfaites mais va au delà. cf la table de vérité ci dessous :
C1 ou C2 => Résultat
FAUX ou FAUX => FAUX
FAUX ou FAUX => VRAI
VRAI ou FAUX => VRAI
VRAI ou VRAI => VRAI
Si les 2 conditions doivent être satisfaites simultanément, alors on a :
1 2
| WHERE ((T.CODEB = 1) AND (T.VALEUR BETWEEN 15 AND 20 ))
AND ((T.CODEB = 2) AND (T.VALEUR BETWEEN 20 AND 25 )) |
Mais on se rend bien compte que cette clause ne renverra jamais VRAI (CODEB ne peut être égal à 1 et à 2 simultanément)
En reprenant la demande initiale :

Envoyé par
chatour
Avec la requête :
1 2 3 4 5
| Clear;
add ('SELECT T.CODEA');
add('FROM MATABLE T');
add ('WHERE (T.CODEB =B1) and (T.VALEUR BETWEEN 15 and 20 )');
open; |
J'obtiens les valeurs de CODEA pour lesquelles B2 a une valeur comprise entre 15 et 20.
Il serait plus judicieux de dire : J'obtiens les valeurs de CODEA pour lesquelles CODEB vaut B1 et VALEUR vaut entre 15 et 20.

Envoyé par
chatour
Comment puis-je imposer une condition supplémentaire sur une autre valeur de CODEB?
par exemple (T.CODEB =B2) and (T.VALEUR BETWEEN 20 and 25 )
Si j'ai bien compris, vous cherchez les valeurs de CODEA pour lesquelles CODEB vaut B1 ou B2 et VALEUR vaut entre 15 et 20. La proposition de @alanglet est bonne. On peut à la limite la simplifier comme suit :
WHERE (T.CODEB = B1 OR T.CODEB = B2) AND T.VALEUR BETWEEN 15 AND 20
Partager