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

Grouper deux requêtes

9 réponses
Avatar
albert
Bonjour

Voici deux requêtes qui fonctionnent bien.

La première compte le nombre de nouveaux membres pour chaque année sur un
tableau.
la deuxième compte le nombre d'abandons pour chaque année sur un tableau.
J'aimerais avoir les deux, nouveaux et abandons sur un seul tableau.

Voici les requêtes existantes :

Nouveaux membres qui ont joint le club par Année.
SELECT Year([joinDATE]) AS Nouveaux_An, Count(Year([joinDATE])) AS Nouveaux
FROM TBLmbcc
GROUP BY Year([joinDATE])
ORDER BY Year([joinDATE]);

Membres qui n'ont pas renouvelé par Année.
SELECT Year([dueDATE]) AS Abandons_An, Count(Year([dueDATE])) AS Abandons
FROM TBLmbcc
GROUP BY Year([dueDATE])
ORDER BY Year([dueDATE]);

Merci de vos suggestions pour résoudre mon problème.


--
albertri-at-videotron.ca.invalid

9 réponses

Avatar
JièL
Le 07/02/2016 20:28, albert a écrit :
Bonjour

Voici deux requêtes qui fonctionnent bien.

La première compte le nombre de nouveaux membres pour chaque année sur
un tableau.
la deuxième compte le nombre d'abandons pour chaque année sur un tableau.
J'aimerais avoir les deux, nouveaux et abandons sur un seul tableau.

Voici les requêtes existantes :

Nouveaux membres qui ont joint le club par Année.
SELECT Year([joinDATE]) AS Nouveaux_An, Count(Year([joinDATE])) AS Nouveaux
FROM TBLmbcc
GROUP BY Year([joinDATE])
ORDER BY Year([joinDATE]);

Membres qui n'ont pas renouvelé par Année.
SELECT Year([dueDATE]) AS Abandons_An, Count(Year([dueDATE])) AS Abandons
FROM TBLmbcc
GROUP BY Year([dueDATE])
ORDER BY Year([dueDATE]);

Merci de vos suggestions pour résoudre mon problème.



Pas testé, mais est-ce qu'une requête "UNION" ne ferait pas l'affaire ?
Ce qui devrait donner ceci

SELECT Year([joinDATE]) AS Nouveaux_An, Count(Year([joinDATE])) AS Nouveaux
FROM TBLmbcc
GROUP BY Year([joinDATE])
ORDER BY Year([joinDATE])
UNION
SELECT Year([dueDATE]) AS Abandons_An, Count(Year([dueDATE])) AS Abandons
FROM TBLmbcc
GROUP BY Year([dueDATE])
ORDER BY Year([dueDATE]);

A vérifier

--
JièL hue nion
Avatar
albert
Bonjour Jièl
Malheureusement non. voir le message d'erreur à la fin.

"JièL" a écrit dans le message de
news:56b86c97$0$9238$
Le 07/02/2016 20:28, albert a écrit :
Bonjour

Voici deux requêtes qui fonctionnent bien.

La première compte le nombre de nouveaux membres pour chaque année sur
un tableau.
la deuxième compte le nombre d'abandons pour chaque année sur un
tableau.
J'aimerais avoir les deux, nouveaux et abandons sur un seul tableau.

Voici les requêtes existantes :

Nouveaux membres qui ont joint le club par Année.
SELECT Year([joinDATE]) AS Nouveaux_An, Count(Year([joinDATE])) AS
Nouveaux
FROM TBLmbcc
GROUP BY Year([joinDATE])
ORDER BY Year([joinDATE]);

Membres qui n'ont pas renouvelé par Année.
SELECT Year([dueDATE]) AS Abandons_An, Count(Year([dueDATE])) AS Abandons
FROM TBLmbcc
GROUP BY Year([dueDATE])
ORDER BY Year([dueDATE]);

Merci de vos suggestions pour résoudre mon problème.



Pas testé, mais est-ce qu'une requête "UNION" ne ferait pas l'affaire ?
Ce qui devrait donner ceci

SELECT Year([joinDATE]) AS Nouveaux_An, Count(Year([joinDATE])) AS
Nouveaux
FROM TBLmbcc
GROUP BY Year([joinDATE])
ORDER BY Year([joinDATE])
UNION
SELECT Year([dueDATE]) AS Abandons_An, Count(Year([dueDATE])) AS Abandons
FROM TBLmbcc
GROUP BY Year([dueDATE])
ORDER BY Year([dueDATE]);
A vérifier
--
JièL hue nion



Message d'erreur :
"L'expression ORDER BY (Year([DueDate])) inclut de champs n'étant pas
sélectionnés par la requête.
Seuls les champs requis dans la première requête peuvent être inclus dans
une expression ORDER BY.)

Si j'enlève ORDER BY seulement la première requête est affichée, la deuxième
est complètement ignorée.

Merci


--
albertri-at-videotron.ca.invalid
Avatar
db
Bonjour,

Tout dépend ce que vous voulez obtenir :
- si la requête UNION proposée par Jièl vous convient, il faudrait, je
pense, la modifier comme suit :

SELECT "Nouveaux" as Typ , Year([joinDATE]) AS An,
Count(Year([joinDATE])) AS
Compte
FROM TBLmbcc
GROUP BY Year([joinDATE])
UNION
SELECT "Abandons" as Typ, Year([dueDATE]) AS An,
Count(Year([dueDATE])) AS Compte
FROM TBLmbcc
GROUP BY Year([dueDATE])
ORDER BY 1


- si vous voulez avoir, par année, le nombre d'abandons et de nouveaux,
il faudrait faire comme ceci :
- sauvegarder la première requête sous le nom "Nouveaux"
- sauvegarder la deuxième requête sous le nom "Abandons"
- créer une troisième requête pour lister les années de façon exhaustive :
SELECT distinct year(joinDATE) as An from TBLmbcc
UNION
SELECT distinct year(dueDATE) as An from TBLmbcc
et la sauvegarder sous le nom "Années"

- la requête suivante devrait vous donner le résultat escompté :

SELECT Année, Nouveaux, Abandons
FROM (Années LEFT JOIN Nouveaux on Nouveaux.Nouveaux_An=Années.An)
LEFT JOIN Abandons on Abandons.Abandons_An=Années.An
ORDER BY Année

db


Le 08/02/2016 14:51, albert a écrit :
Bonjour Jièl
Malheureusement non. voir le message d'erreur à la fin.

"JièL" a écrit dans le message de
news:56b86c97$0$9238$
Le 07/02/2016 20:28, albert a écrit :
Bonjour

Voici deux requêtes qui fonctionnent bien.

La première compte le nombre de nouveaux membres pour chaque année sur
un tableau.
la deuxième compte le nombre d'abandons pour chaque année sur un
tableau.
J'aimerais avoir les deux, nouveaux et abandons sur un seul tableau.

Voici les requêtes existantes :

Nouveaux membres qui ont joint le club par Année.
SELECT Year([joinDATE]) AS Nouveaux_An, Count(Year([joinDATE])) AS
Nouveaux
FROM TBLmbcc
GROUP BY Year([joinDATE])
ORDER BY Year([joinDATE]);

Membres qui n'ont pas renouvelé par Année.
SELECT Year([dueDATE]) AS Abandons_An, Count(Year([dueDATE])) AS
Abandons
FROM TBLmbcc
GROUP BY Year([dueDATE])
ORDER BY Year([dueDATE]);

Merci de vos suggestions pour résoudre mon problème.



Pas testé, mais est-ce qu'une requête "UNION" ne ferait pas l'affaire ?
Ce qui devrait donner ceci

SELECT Year([joinDATE]) AS Nouveaux_An, Count(Year([joinDATE])) AS
Nouveaux
FROM TBLmbcc
GROUP BY Year([joinDATE])
ORDER BY Year([joinDATE])
UNION
SELECT Year([dueDATE]) AS Abandons_An, Count(Year([dueDATE])) AS Abandons
FROM TBLmbcc
GROUP BY Year([dueDATE])
ORDER BY Year([dueDATE]);
A vérifier
--
JièL hue nion



Message d'erreur :
"L'expression ORDER BY (Year([DueDate])) inclut de champs n'étant pas
sélectionnés par la requête.
Seuls les champs requis dans la première requête peuvent être inclus
dans une expression ORDER BY.)

Si j'enlève ORDER BY seulement la première requête est affichée, la
deuxième est complètement ignorée.

Merci


Avatar
albert
"db" a écrit dans le message de
news:56b8a752$0$19738$
Bonjour db

Les trois premières requêtes font ce qu'on attend, mais la dernière ouvre
une série de boites de dialogue de paramètres.
(années, nouveaux, abandons, année, Nouveaux.Nouveaux_An,
Abandons.Abandons_An)
Année sans ou avec "S" dans "SELECT Année, Nouveaux, Abandons"
aussi le message suivant, voir pièce jointe.

(le fichier joint ne passe pas)

Je compte sur vous tous pour m'aider
Albert



Tout dépend ce que vous voulez obtenir :
- si la requête UNION proposée par Jièl vous convient, il faudrait, je
pense, la modifier comme suit :

SELECT "Nouveaux" as Typ , Year([joinDATE]) AS An, Count(Year([joinDATE]))
AS
Compte
FROM TBLmbcc
GROUP BY Year([joinDATE])
UNION
SELECT "Abandons" as Typ, Year([dueDATE]) AS An,
Count(Year([dueDATE])) AS Compte
FROM TBLmbcc
GROUP BY Year([dueDATE])
ORDER BY 1


- si vous voulez avoir, par année, le nombre d'abandons et de nouveaux, il
faudrait faire comme ceci :
- sauvegarder la première requête sous le nom "Nouveaux"
- sauvegarder la deuxième requête sous le nom "Abandons"
- créer une troisième requête pour lister les années de façon exhaustive :
SELECT distinct year(joinDATE) as An from TBLmbcc
UNION
SELECT distinct year(dueDATE) as An from TBLmbcc
et la sauvegarder sous le nom "Années"

- la requête suivante devrait vous donner le résultat escompté :

SELECT Année, Nouveaux, Abandons
FROM (Années LEFT JOIN Nouveaux on Nouveaux.Nouveaux_An=Années.An)
LEFT JOIN Abandons on Abandons.Abandons_An=Années.An
ORDER BY Année

db

Avatar
albert
"albert" a écrit dans le message de
news:n9amt5$g6k$
"db" a écrit dans le message de
news:56b8a752$0$19738$
Bonjour db

Les trois premières requêtes font ce qu'on attend, mais la dernière ouvre
une série de boites de dialogue de paramètres.
(années, nouveaux, abandons, année, Nouveaux.Nouveaux_An,
Abandons.Abandons_An)
Année sans ou avec "S" dans "SELECT Année, Nouveaux, Abandons"
aussi le message suivant, voir pièce jointe.

(le fichier joint ne passe pas)


J'ai mis le message sur cjoint
voir http://www.cjoint.com/c/FBityZV6bRD

merci
albert
Avatar
db
Bonsoir,

Vous avez bien sauvegardé les trois requêtes dans l'onglet "Requêtes"
d'Access avec les noms que je vous ai indiqués (voir
http://www.cjoint.com/c/FBitLQcbYmW )?



Sinon, il y avait effectivement une erreur dans la dernière requête :

SELECT An, Nouveaux.Nouveaux, Abandons.Abandons
FROM (Années LEFT JOIN Nouveaux on Nouveaux.Nouveaux_An=Années.An)
LEFT JOIN Abandons on Abandons.Abandons_An=Années.An
ORDER BY Année

Si ça ne marche pas mieux, mettez sur cjoint un fichier Access avec
juste la table TBLmbcc vide.

db



Le 08/02/2016 20:27, albert a écrit :
"albert" a écrit dans le message de
news:n9amt5$g6k$
"db" a écrit dans le message de
news:56b8a752$0$19738$
Bonjour db

Les trois premières requêtes font ce qu'on attend, mais la dernière




ouvre
une série de boites de dialogue de paramètres.
(années, nouveaux, abandons, année, Nouveaux.Nouveaux_An,
Abandons.Abandons_An)
Année sans ou avec "S" dans "SELECT Année, Nouveaux, Abandons"
aussi le message suivant, voir pièce jointe.

(le fichier joint ne passe pas)


J'ai mis le message sur cjoint
voir http://www.cjoint.com/c/FBityZV6bRD

merci
albert
Avatar
albert
Pour db

http://www.cjoint.com/c/FBivgZWOF5D

La base de données avec tous les champs non nécessaires supprimés

et les requêtes mentionnées incluses


--
albertri-at-videotron.ca.invalid
Avatar
db
Le 08/02/2016 22:09, albert a écrit :
Pour db

http://www.cjoint.com/c/FBivgZWOF5D

La base de données avec tous les champs non nécessaires supprimés

et les requêtes mentionnées incluses





En retour : http://www.cjoint.com/c/FBiwazpaAnW

Le problème venait du fait que c'était les requêtes de votre premier
post qu'il fallait sauvegarder.


Bonne soirée,

db
Avatar
albert
Bonne journée db
suite à la fin..
"db" a écrit dans le message de
news:56b91054$0$3066$
Le 08/02/2016 22:09, albert a écrit :
Pour db
http://www.cjoint.com/c/FBivgZWOF5D
La base de données avec tous les champs non nécessaires supprimés
et les requêtes mentionnées incluses


En retour : http://www.cjoint.com/c/FBiwazpaAnW
Le problème venait du fait que c'était les requêtes de votre premier post
qu'il fallait sauvegarder.
Bonne soirée,
db




Malgré mon grand âge ma connaissance d' ACCESS est encore petite.
Donc ça prenait trois requêtes pour pouvoir finir le tableau avec une
quatrième requête.
En effet les années étaient mon problème.
Tout cela ne se trouve pas dans les livres, ça prend des gens comme vous
pour nous passer leur savoir.

Un grand merci


--
albertri-at-videotron.ca.invalid