Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Simplification de requête (bis)

14 réponses
Avatar
Hervé DUCARNE
Bonjour,

J'ai encore un problème pour la construction d'une requête...

J'ai une table "donnees" qui contient tout un tas de champs, la plupart sont
des booléens.

Il y a t'il moyen de construire 1 requête sql qui me donnerait le résultat
suivant :

nbre total d'enregistrements avec champ1 à vrai / (nbre total
d'enregistrements avec champ2 à vrai OU nbre total d'enregistrements avec
champs3 à vrai).

Merci d'avance.

10 réponses

1 2
Avatar
Jessy Sempere [MVP]
Bonjour

Faudrait savoir dans quel cas, tu veux le champ2 ou le champ3...

Sinon, il te suffit de faire je pense :

Select (-Sum([1]))/(-Sum([2])) AS Division
From TaTable;

--
@+
Jessy Sempere - Access MVP

------------------------------------
Site @ccess : http://access.jessy.free.fr/
Pour l'efficacité de tous :
http://users.skynet.be/mpfa/
------------------------------------
"Hervé DUCARNE" a écrit dans le message de news:
e5b4P$
Bonjour,

J'ai encore un problème pour la construction d'une requête...

J'ai une table "donnees" qui contient tout un tas de champs, la plupart
sont
des booléens.

Il y a t'il moyen de construire 1 requête sql qui me donnerait le résultat
suivant :

nbre total d'enregistrements avec champ1 à vrai / (nbre total
d'enregistrements avec champ2 à vrai OU nbre total d'enregistrements avec
champs3 à vrai).

Merci d'avance.




Avatar
Hervé DUCARNE
Merci,

mais c'est dans tous les cas, c'est-à-dire :
nombre de champ1 vrai / (nombre d'enregistrements qui ont soit le champ2 à
vrai, soit le champ3, soit les 2).

Avec 2 requête, je sais faire, mais avec 1, je ne suis pas certain que cela
soit faisable, d'où ma question pour m'éviter de me casser le crâne sur
quelquechose d'infaisable ;-)
"Jessy Sempere [MVP]" a écrit dans le message de
news:
Bonjour

Faudrait savoir dans quel cas, tu veux le champ2 ou le champ3...

Sinon, il te suffit de faire je pense :

Select (-Sum([1]))/(-Sum([2])) AS Division
From TaTable;

--
@+
Jessy Sempere - Access MVP

------------------------------------
Site @ccess : http://access.jessy.free.fr/
Pour l'efficacité de tous :
http://users.skynet.be/mpfa/
------------------------------------
"Hervé DUCARNE" a écrit dans le message de news:
e5b4P$
Bonjour,

J'ai encore un problème pour la construction d'une requête...

J'ai une table "donnees" qui contient tout un tas de champs, la plupart
sont
des booléens.

Il y a t'il moyen de construire 1 requête sql qui me donnerait le
résultat


suivant :

nbre total d'enregistrements avec champ1 à vrai / (nbre total
d'enregistrements avec champ2 à vrai OU nbre total d'enregistrements
avec


champs3 à vrai).

Merci d'avance.








Avatar
Jessy Sempere [MVP]
Re,

Effectivement, à première vue je ne vois pas trop comment faire
en une seule requête...

--
@+
Jessy Sempere - Access MVP

------------------------------------
Site @ccess : http://access.jessy.free.fr/
Pour l'efficacité de tous :
http://users.skynet.be/mpfa/
------------------------------------
"Hervé DUCARNE" a écrit dans le message de news:

Merci,

mais c'est dans tous les cas, c'est-à-dire :
nombre de champ1 vrai / (nombre d'enregistrements qui ont soit le champ2 à
vrai, soit le champ3, soit les 2).

Avec 2 requête, je sais faire, mais avec 1, je ne suis pas certain que
cela
soit faisable, d'où ma question pour m'éviter de me casser le crâne sur
quelquechose d'infaisable ;-)
"Jessy Sempere [MVP]" a écrit dans le message
de
news:
Bonjour

Faudrait savoir dans quel cas, tu veux le champ2 ou le champ3...

Sinon, il te suffit de faire je pense :

Select (-Sum([1]))/(-Sum([2])) AS Division
From TaTable;

--
@+
Jessy Sempere - Access MVP

------------------------------------
Site @ccess : http://access.jessy.free.fr/
Pour l'efficacité de tous :
http://users.skynet.be/mpfa/
------------------------------------
"Hervé DUCARNE" a écrit dans le message de news:
e5b4P$
Bonjour,

J'ai encore un problème pour la construction d'une requête...

J'ai une table "donnees" qui contient tout un tas de champs, la plupart
sont
des booléens.

Il y a t'il moyen de construire 1 requête sql qui me donnerait le
résultat


suivant :

nbre total d'enregistrements avec champ1 à vrai / (nbre total
d'enregistrements avec champ2 à vrai OU nbre total d'enregistrements
avec


champs3 à vrai).

Merci d'avance.












Avatar
Hervé DUCARNE
Ok, merci.

Je ne peux même pas écrier un truc du genre :

select sum[champ1]/(select .....) ?

Merci.


"Jessy Sempere [MVP]" a écrit dans le message de
news:%23qH$
Re,

Effectivement, à première vue je ne vois pas trop comment faire
en une seule requête...

--
@+
Jessy Sempere - Access MVP

------------------------------------
Site @ccess : http://access.jessy.free.fr/
Pour l'efficacité de tous :
http://users.skynet.be/mpfa/
------------------------------------
"Hervé DUCARNE" a écrit dans le message de news:

Merci,

mais c'est dans tous les cas, c'est-à-dire :
nombre de champ1 vrai / (nombre d'enregistrements qui ont soit le champ2
à


vrai, soit le champ3, soit les 2).

Avec 2 requête, je sais faire, mais avec 1, je ne suis pas certain que
cela
soit faisable, d'où ma question pour m'éviter de me casser le crâne sur
quelquechose d'infaisable ;-)
"Jessy Sempere [MVP]" a écrit dans le
message


de
news:
Bonjour

Faudrait savoir dans quel cas, tu veux le champ2 ou le champ3...

Sinon, il te suffit de faire je pense :

Select (-Sum([1]))/(-Sum([2])) AS Division
From TaTable;

--
@+
Jessy Sempere - Access MVP

------------------------------------
Site @ccess : http://access.jessy.free.fr/
Pour l'efficacité de tous :
http://users.skynet.be/mpfa/
------------------------------------
"Hervé DUCARNE" a écrit dans le message de
news:



e5b4P$
Bonjour,

J'ai encore un problème pour la construction d'une requête...

J'ai une table "donnees" qui contient tout un tas de champs, la
plupart




sont
des booléens.

Il y a t'il moyen de construire 1 requête sql qui me donnerait le
résultat


suivant :

nbre total d'enregistrements avec champ1 à vrai / (nbre total
d'enregistrements avec champ2 à vrai OU nbre total d'enregistrements
avec


champs3 à vrai).

Merci d'avance.
















Avatar
Jessy Sempere [MVP]
Re,

Je ne suis vraiment pas spécialiste des instruction SQL imbriquée...
Mais effectivement, il y a peut-être une piste du côté des clauses IN

Un des loustiques du groupe va bien venir t'aider... ;-))
--
@+
Jessy Sempere - Access MVP

------------------------------------
Site @ccess : http://access.jessy.free.fr/
Pour l'efficacité de tous :
http://users.skynet.be/mpfa/
------------------------------------
"Hervé DUCARNE" a écrit dans le message de news:
%239uB5$
Ok, merci.

Je ne peux même pas écrier un truc du genre :

select sum[champ1]/(select .....) ?

Merci.


"Jessy Sempere [MVP]" a écrit dans le message
de
news:%23qH$
Re,

Effectivement, à première vue je ne vois pas trop comment faire
en une seule requête...

--
@+
Jessy Sempere - Access MVP

------------------------------------
Site @ccess : http://access.jessy.free.fr/
Pour l'efficacité de tous :
http://users.skynet.be/mpfa/
------------------------------------
"Hervé DUCARNE" a écrit dans le message de news:

Merci,

mais c'est dans tous les cas, c'est-à-dire :
nombre de champ1 vrai / (nombre d'enregistrements qui ont soit le
champ2
à


vrai, soit le champ3, soit les 2).

Avec 2 requête, je sais faire, mais avec 1, je ne suis pas certain que
cela
soit faisable, d'où ma question pour m'éviter de me casser le crâne sur
quelquechose d'infaisable ;-)
"Jessy Sempere [MVP]" a écrit dans le
message


de
news:
Bonjour

Faudrait savoir dans quel cas, tu veux le champ2 ou le champ3...

Sinon, il te suffit de faire je pense :

Select (-Sum([1]))/(-Sum([2])) AS Division
From TaTable;

--
@+
Jessy Sempere - Access MVP

------------------------------------
Site @ccess : http://access.jessy.free.fr/
Pour l'efficacité de tous :
http://users.skynet.be/mpfa/
------------------------------------
"Hervé DUCARNE" a écrit dans le message de
news:



e5b4P$
Bonjour,

J'ai encore un problème pour la construction d'une requête...

J'ai une table "donnees" qui contient tout un tas de champs, la
plupart




sont
des booléens.

Il y a t'il moyen de construire 1 requête sql qui me donnerait le
résultat


suivant :

nbre total d'enregistrements avec champ1 à vrai / (nbre total
d'enregistrements avec champ2 à vrai OU nbre total d'enregistrements
avec


champs3 à vrai).

Merci d'avance.




















Avatar
Eric
Bonjour,

Peut-être, un truc du genre:
SELECT Sum(-[1]) /(SELECT Sum(-[2]-[3]) FROM LaTable)
FROM LaTable
ou
SELECT Sum(-[1]) /(SELECT ABS(Sum([2]+[3])) FROM LaTable)
FROM LaTable;

J'ai souvenir que tes champs étaient nommés [1],[2], ... , [100] donc
j'ai poursuivi dans ce sens ;-)

Ok, merci.

Je ne peux même pas écrier un truc du genre :

select sum[champ1]/(select .....) ?

Merci.


"Jessy Sempere [MVP]" a écrit dans le message de
news:%23qH$

Re,

Effectivement, à première vue je ne vois pas trop comment faire
en une seule requête...

--
@+
Jessy Sempere - Access MVP

------------------------------------
Site @ccess : http://access.jessy.free.fr/
Pour l'efficacité de tous :
http://users.skynet.be/mpfa/
------------------------------------
"Hervé DUCARNE" a écrit dans le message de news:


Merci,

mais c'est dans tous les cas, c'est-à-dire :
nombre de champ1 vrai / (nombre d'enregistrements qui ont soit le champ2



à

vrai, soit le champ3, soit les 2).

Avec 2 requête, je sais faire, mais avec 1, je ne suis pas certain que
cela
soit faisable, d'où ma question pour m'éviter de me casser le crâne sur
quelquechose d'infaisable ;-)
"Jessy Sempere [MVP]" a écrit dans le



message

de
news:

Bonjour

Faudrait savoir dans quel cas, tu veux le champ2 ou le champ3...

Sinon, il te suffit de faire je pense :

Select (-Sum([1]))/(-Sum([2])) AS Division
From TaTable;

--
@+
Jessy Sempere - Access MVP

------------------------------------
Site @ccess : http://access.jessy.free.fr/
Pour l'efficacité de tous :
http://users.skynet.be/mpfa/
------------------------------------
"Hervé DUCARNE" a écrit dans le message de




news:

e5b4P$

Bonjour,

J'ai encore un problème pour la construction d'une requête...

J'ai une table "donnees" qui contient tout un tas de champs, la





plupart

sont
des booléens.

Il y a t'il moyen de construire 1 requête sql qui me donnerait le



résultat

suivant :

nbre total d'enregistrements avec champ1 à vrai / (nbre total
d'enregistrements avec champ2 à vrai OU nbre total d'enregistrements



avec

champs3 à vrai).

Merci d'avance.














--
A+
Eric
http://users.skynet.be/mpfa/
Archives : http://groups.google.fr/group/microsoft.public.fr.access?hl=fr





Avatar
Hervé DUCARNE
Bonjour Eric,

Tu as bonne mémoire ;-))

Par contre dans ta requête, il va me comtper 2 fois un enregistrement qui a
vrai à 2 et vrai à 3, non ?
Si c'est le cas ça n'ira pas, mes calculs seront faussés...


"Eric" a écrit dans le message de
news:
Bonjour,

Peut-être, un truc du genre:
SELECT Sum(-[1]) /(SELECT Sum(-[2]-[3]) FROM LaTable)
FROM LaTable
ou
SELECT Sum(-[1]) /(SELECT ABS(Sum([2]+[3])) FROM LaTable)
FROM LaTable;

J'ai souvenir que tes champs étaient nommés [1],[2], ... , [100] donc
j'ai poursuivi dans ce sens ;-)

Ok, merci.

Je ne peux même pas écrier un truc du genre :

select sum[champ1]/(select .....) ?

Merci.


"Jessy Sempere [MVP]" a écrit dans le
message de


news:%23qH$

Re,

Effectivement, à première vue je ne vois pas trop comment faire
en une seule requête...

--
@+
Jessy Sempere - Access MVP

------------------------------------
Site @ccess : http://access.jessy.free.fr/
Pour l'efficacité de tous :
http://users.skynet.be/mpfa/
------------------------------------
"Hervé DUCARNE" a écrit dans le message de
news:





Merci,

mais c'est dans tous les cas, c'est-à-dire :
nombre de champ1 vrai / (nombre d'enregistrements qui ont soit le
champ2





à

vrai, soit le champ3, soit les 2).

Avec 2 requête, je sais faire, mais avec 1, je ne suis pas certain que
cela
soit faisable, d'où ma question pour m'éviter de me casser le crâne sur
quelquechose d'infaisable ;-)
"Jessy Sempere [MVP]" a écrit dans le



message

de
news:

Bonjour

Faudrait savoir dans quel cas, tu veux le champ2 ou le champ3...

Sinon, il te suffit de faire je pense :

Select (-Sum([1]))/(-Sum([2])) AS Division
From TaTable;

--
@+
Jessy Sempere - Access MVP

------------------------------------
Site @ccess : http://access.jessy.free.fr/
Pour l'efficacité de tous :
http://users.skynet.be/mpfa/
------------------------------------
"Hervé DUCARNE" a écrit dans le message de




news:

e5b4P$

Bonjour,

J'ai encore un problème pour la construction d'une requête...

J'ai une table "donnees" qui contient tout un tas de champs, la





plupart

sont
des booléens.

Il y a t'il moyen de construire 1 requête sql qui me donnerait le



résultat

suivant :

nbre total d'enregistrements avec champ1 à vrai / (nbre total
d'enregistrements avec champ2 à vrai OU nbre total d'enregistrements



avec

champs3 à vrai).

Merci d'avance.














--
A+
Eric
http://users.skynet.be/mpfa/
Archives : http://groups.google.fr/group/microsoft.public.fr.access?hl=fr







Avatar
Eric
.../...
Le diviseur retourne soit :
-le nb de champ2 à Vrai si tous les champ3 sont Faux
-le nb de champ3 à Vrai si tous les champ2 sont Faux
-le nb total de champ2 ET champ3 à Vrai

Ce qui doit correspondre à ton OU, je pense.


SELECT Sum(-[1]) /(SELECT ABS(Sum([2]+[3])) FROM LaTable)
FROM LaTable;




--
A+
Eric
http://users.skynet.be/mpfa/
Archives : http://groups.google.fr/group/microsoft.public.fr.access?hl=fr

Avatar
Hervé DUCARNE
Merci, je testerai cet après-midi, et viendrai t'avertir du résultat !


"Eric" a écrit dans le message de
news:
.../...
Le diviseur retourne soit :
-le nb de champ2 à Vrai si tous les champ3 sont Faux
-le nb de champ3 à Vrai si tous les champ2 sont Faux
-le nb total de champ2 ET champ3 à Vrai

Ce qui doit correspondre à ton OU, je pense.


SELECT Sum(-[1]) /(SELECT ABS(Sum([2]+[3])) FROM LaTable)
FROM LaTable;




--
A+
Eric
http://users.skynet.be/mpfa/
Archives : http://groups.google.fr/group/microsoft.public.fr.access?hl=fr



Avatar
Jessy Sempere [MVP]
Bonjour

J'aurais peut-être essayé :

SELECT Sum(-[1])
/(Sum(-[2])+(SELECT Sum(-[3]) FROM LaTable Where [2]=0))
FROM LaTable

En fait, tu prends tous les 2 à vrai et seulement les 3 à vrai qui ont
2 à faux pour éviter de compter 2 fois si 2 et 3 sont vrai

@+
Jessy Sempere - Access MVP

------------------------------------
Site @ccess : http://access.jessy.free.fr/
Pour l'efficacité de tous :
http://users.skynet.be/mpfa/
------------------------------------
"Eric" a écrit dans le message de news:

.../...
Le diviseur retourne soit :
-le nb de champ2 à Vrai si tous les champ3 sont Faux
-le nb de champ3 à Vrai si tous les champ2 sont Faux
-le nb total de champ2 ET champ3 à Vrai

Ce qui doit correspondre à ton OU, je pense.


SELECT Sum(-[1]) /(SELECT ABS(Sum([2]+[3])) FROM LaTable)
FROM LaTable;




--
A+
Eric
http://users.skynet.be/mpfa/
Archives : http://groups.google.fr/group/microsoft.public.fr.access?hl=fr



1 2