par
spelou » 08 mars 2008, 19:20
Re-bonjour,
J'ai une ligne ou j'ai a_creer sur Y dons qui ne devrait pas apparaitre et elle apparait systematiquement bizarre.
Par rapport à ta requête, c'est normal
where (crea_relance.a_creer = 'N' || crea_relance.abandon = 'N' || crea_relance.en_cours='Y' || crea_relance.en_veille='Y')
Tu à mis des OR. C'est à dire que à partir du moment ou l'une de ces conditions est rempli, la ligne sera selectionnée.
crea_relance.a_creer peut très bien valoir Y à partir du moment ou au moins l'une des autres conditions est remplie !
Au contraire, avec l'opérateur AND, toutes les conditions doivent être validée !
Un exemple simple :
t'a une table animaux :
Animaux
----------
NOm | a_poils | a_cornes
chat | 1 | 0
Chien | 1 | 0
rhinoceros |1 | 1
Taureau | 1 | 1
0 : faux
1 : vrai
Si tu veux juste sélectionner les animaux à poils, tu fait :
Si tu veux juste sélectionner les animaux à cornes, tu fait :
Si tu veux selectionner les animaux qui ont des cornes OU des poils (donc implicitement OU les deux) :
(ici ca va tout sélectionner)
Si tu veux selectionner les animaux qui ont des cornes ET des poils :
(juste le taureau).
Après, tu peux compliquer la chose en ayant plus de deux opérandes (a_queue ?) et en faisant des combinaisons avec des parenthèses
Le tout c'est de bien restranscrire ce que tu veux selectionner en textuel avant de le passer en SQL avec des opérateurs logique
