Requette SQL avec plusieurs critères
thedavix
Messages postés
466
Statut
Membre
-
mpb_fp Messages postés 15 Statut Membre -
mpb_fp Messages postés 15 Statut Membre -
Salut a tous!
Me voila pour une nouvelle question en SQL pour Access.
J'ai une table "tDonneeTypeGeneral" et "tProprietes"
vous pouvez voir le schéma la..
http://hiddenmickeys.free.fr/prob.jpg
ca sera plus clair
Maintenant le champ "PROParametre" est lien sur une table "tParametre" mais bon ici on s'en fou c'est pas ca le prob.
Mon problème c'est que j'ai fait une requette qui me sors "DOGElementPropulse" quand le "PROParametre = 1" et que "DOGDonnee1 >="16.9" " et "DOGDonnee2<="17.9""
Jusqu'à la ca marche parfaitement..
Maintenant j'aimerai mettre d'autres critères.. j'aimerai rajouter que le "PROParametre = 2" et que "DOGDonnee1 >="36.6" " et "DOGDonnee2<="39.5""
Donc il faudrait que les deux soient vrai pour qu'un résultat sort.. vous m'avez compris?
Le seul problème c'est quand quand je fais ca avec un AND
ca marche pas...
voila le code qui marche pas..
--------------------------------------------
SELECT tDonneeTypeGeneral.DOGElementsPropulse, tProprietes.PROParametres, tDonneeTypeGeneral.DOGDonnee1, tDonneeTypeGeneral.DOGDonnee2
FROM tDonneeTypeGeneral LEFT JOIN tProprietes ON tDonneeTypeGeneral.DOGProprietes = tProprietes.PROCpt
WHERE (((tProprietes.PROParametres)=1) AND ((tDonneeTypeGeneral.DOGDonnee1)>="16.9") AND ((tDonneeTypeGeneral.DOGDonnee2)<="17.9")) AND (((tProprietes.PROParametres)=2) AND ((tDonneeTypeGeneral.DOGDonnee1)>="36.6") AND ((tDonneeTypeGeneral.DOGDonnee2)<="39.5"));
-------------------------------------------------------
Alors j'ai été obligé de mettre un OR ici
---------------
........ OR (((tProprietes.PROParametres)=2) AND ((tDonneeTypeGeneral.DOGDonnee1)>="36.6") AND ((tDonneeTypeGeneral.DOGDonnee2)<="39.5"));
-------------
Mais dans ce cas la.. c'est si l'un ou l'autre est vrai que ca passe... mais j'aimerai bien que les deux soient vrai....
Si qqun m'a compris.. (j'ai essayé d'etre le plus clair possible.. )
Et qu'il a la solution je l'en remercie deja :-)
" Le vrai savant n'est pas celui qui apprend,
mais celui qui comprend... " =;o)
Me voila pour une nouvelle question en SQL pour Access.
J'ai une table "tDonneeTypeGeneral" et "tProprietes"
vous pouvez voir le schéma la..
http://hiddenmickeys.free.fr/prob.jpg
ca sera plus clair
Maintenant le champ "PROParametre" est lien sur une table "tParametre" mais bon ici on s'en fou c'est pas ca le prob.
Mon problème c'est que j'ai fait une requette qui me sors "DOGElementPropulse" quand le "PROParametre = 1" et que "DOGDonnee1 >="16.9" " et "DOGDonnee2<="17.9""
Jusqu'à la ca marche parfaitement..
Maintenant j'aimerai mettre d'autres critères.. j'aimerai rajouter que le "PROParametre = 2" et que "DOGDonnee1 >="36.6" " et "DOGDonnee2<="39.5""
Donc il faudrait que les deux soient vrai pour qu'un résultat sort.. vous m'avez compris?
Le seul problème c'est quand quand je fais ca avec un AND
ca marche pas...
voila le code qui marche pas..
--------------------------------------------
SELECT tDonneeTypeGeneral.DOGElementsPropulse, tProprietes.PROParametres, tDonneeTypeGeneral.DOGDonnee1, tDonneeTypeGeneral.DOGDonnee2
FROM tDonneeTypeGeneral LEFT JOIN tProprietes ON tDonneeTypeGeneral.DOGProprietes = tProprietes.PROCpt
WHERE (((tProprietes.PROParametres)=1) AND ((tDonneeTypeGeneral.DOGDonnee1)>="16.9") AND ((tDonneeTypeGeneral.DOGDonnee2)<="17.9")) AND (((tProprietes.PROParametres)=2) AND ((tDonneeTypeGeneral.DOGDonnee1)>="36.6") AND ((tDonneeTypeGeneral.DOGDonnee2)<="39.5"));
-------------------------------------------------------
Alors j'ai été obligé de mettre un OR ici
---------------
........ OR (((tProprietes.PROParametres)=2) AND ((tDonneeTypeGeneral.DOGDonnee1)>="36.6") AND ((tDonneeTypeGeneral.DOGDonnee2)<="39.5"));
-------------
Mais dans ce cas la.. c'est si l'un ou l'autre est vrai que ca passe... mais j'aimerai bien que les deux soient vrai....
Si qqun m'a compris.. (j'ai essayé d'etre le plus clair possible.. )
Et qu'il a la solution je l'en remercie deja :-)
" Le vrai savant n'est pas celui qui apprend,
mais celui qui comprend... " =;o)
A voir également:
- Requette SQL avec plusieurs critères
- Logiciel sql - Télécharger - Bases de données
- Somme.si.ens plusieurs critères même colonne ✓ - Forum Excel
- Jointure sql ✓ - Forum MySQL
- Sql (+) - Forum Programmation
- Fonction SOMME Si. Ens. pour calculer selon plusieurs critèr ✓ - Forum Excel
1 réponse
Salut.
Tout d'abord, tâche de simplifier les problèmes que tu nous soumet. Merci.
Je ne connais pas exactement ton prbl => mon raisonnement sera peut être absurde. Je m'en excuse d'avance.
Exp: (Si j'ai bien compris)
Voici ta clause where:
WHERE(a=1 and b>2 and c<3) AND (a=2 and b>4 and c<5)
Il est impossible que ta requête fonctionne car dans le cas où la 1° condition est vrai, cela implique que a=1 donc la 2° condition est obligatoirement faux car a ne peut être =1 et =2 même avec une chiée de paranthèse. C'est à peut près le même raisonnement pour b et c.
Regarde si tu peux la transformée en:
WHERE(a=1 or a=2) and (b>2 or b>4) and (c<3 or c<5)
NB: si b>4, il est forcément >2
Sinon (solution à la mort moi le noeud):
fait une requête avec la 1° condition
fait une requête avec la 2° condition
si le résultat te convient, applique le changement.
Pas d'excitation prolongée sans avis médical
ps: je pense avoir déjà compris le prbl. Pas si mal. Mais pour une meilleur solution il faudra t'adresser à plus balèse.
@+
Pas d'excitation prolongée sans avis médical
Tout d'abord, tâche de simplifier les problèmes que tu nous soumet. Merci.
Je ne connais pas exactement ton prbl => mon raisonnement sera peut être absurde. Je m'en excuse d'avance.
Exp: (Si j'ai bien compris)
Voici ta clause where:
WHERE(a=1 and b>2 and c<3) AND (a=2 and b>4 and c<5)
Il est impossible que ta requête fonctionne car dans le cas où la 1° condition est vrai, cela implique que a=1 donc la 2° condition est obligatoirement faux car a ne peut être =1 et =2 même avec une chiée de paranthèse. C'est à peut près le même raisonnement pour b et c.
Regarde si tu peux la transformée en:
WHERE(a=1 or a=2) and (b>2 or b>4) and (c<3 or c<5)
NB: si b>4, il est forcément >2
Sinon (solution à la mort moi le noeud):
fait une requête avec la 1° condition
fait une requête avec la 2° condition
si le résultat te convient, applique le changement.
Pas d'excitation prolongée sans avis médical
ps: je pense avoir déjà compris le prbl. Pas si mal. Mais pour une meilleur solution il faudra t'adresser à plus balèse.
@+
Pas d'excitation prolongée sans avis médical