Addition de champs de plusieurs tables en SQL avec UNION
7 réponses
pubdespierre
Bonjour à tous, je cherche à sommer, enregistrement par
enregistrement, des champs de plusieurs tables (60 tables ...) ayant
la même structure et se trouvant dans la même base :
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
Maxence HUBICHE
Si tu veux utiliser UNION, tu devras faire 2 requêtes : -Celle qui fait l'union -Celle qui fait la somme.
Ce qui te donnera pour la première : SELECT [Date], Volume FROM Table1 UNION SELECT [Date], Volume FROM Table2 UNION SELECT [Date], Volume FROM Table3 ... SELECT [Date], Volume FROM Table30;
Et pour la seconde : SELECT [Date], SUM(Volume) FROM RequetePrecedente GROUP BY [Date]
Voilà ;)
-----Message d'origine----- Bonjour à tous, je cherche à sommer, enregistrement par enregistrement, des champs de plusieurs tables (60 tables ...) ayant
la même structure et se trouvant dans la même base :
Ca doit être simple, mais j'ai perdu une demi-journée à chercher sur
le net ... si quelqu'un a une idée, je suis preneur. Merci à tous.
.
Si tu veux utiliser UNION, tu devras faire 2 requêtes :
-Celle qui fait l'union
-Celle qui fait la somme.
Ce qui te donnera pour la première :
SELECT [Date], Volume FROM Table1
UNION
SELECT [Date], Volume FROM Table2
UNION
SELECT [Date], Volume FROM Table3
...
SELECT [Date], Volume FROM Table30;
Et pour la seconde :
SELECT [Date], SUM(Volume)
FROM RequetePrecedente
GROUP BY [Date]
Voilà ;)
-----Message d'origine-----
Bonjour à tous, je cherche à sommer, enregistrement par
enregistrement, des champs de plusieurs tables (60
tables ...) ayant
la même structure et se trouvant dans la même base :
Si tu veux utiliser UNION, tu devras faire 2 requêtes : -Celle qui fait l'union -Celle qui fait la somme.
Ce qui te donnera pour la première : SELECT [Date], Volume FROM Table1 UNION SELECT [Date], Volume FROM Table2 UNION SELECT [Date], Volume FROM Table3 ... SELECT [Date], Volume FROM Table30;
Et pour la seconde : SELECT [Date], SUM(Volume) FROM RequetePrecedente GROUP BY [Date]
Voilà ;)
-----Message d'origine----- Bonjour à tous, je cherche à sommer, enregistrement par enregistrement, des champs de plusieurs tables (60 tables ...) ayant
la même structure et se trouvant dans la même base :
Ca doit être simple, mais j'ai perdu une demi-journée à chercher sur
le net ... si quelqu'un a une idée, je suis preneur. Merci à tous.
.
pubdespierre
"Maxence HUBICHE" <nospam wrote in message news:<009e01c3c0dc$0d789410$...
Si tu veux utiliser UNION, tu devras faire 2 requ tes : -Celle qui fait l'union -Celle qui fait la somme.
Ce qui te donnera pour la premi re : SELECT [Date], Volume FROM Table1 UNION SELECT [Date], Volume FROM Table2 UNION SELECT [Date], Volume FROM Table3 ... SELECT [Date], Volume FROM Table30;
Et pour la seconde : SELECT [Date], SUM(Volume) FROM RequetePrecedente GROUP BY [Date]
Voil ;)
-----Message d'origine----- Bonjour tous, je cherche sommer, enregistrement par enregistrement, des champs de plusieurs tables (60 tables ...) ayant
la m me structure et se trouvant dans la m me base :
Ca doit tre simple, mais j'ai perdu une demi-journ e chercher sur
le net ... si quelqu'un a une id e, je suis preneur. Merci tous.
.
Merci Maxence, J'essaye ça de ce pas et je te reviens.
"Maxence HUBICHE" <nospam mhubiche@club-internet.fr> wrote in message news:<009e01c3c0dc$0d789410$a401280a@phx.gbl>...
Si tu veux utiliser UNION, tu devras faire 2 requ tes :
-Celle qui fait l'union
-Celle qui fait la somme.
Ce qui te donnera pour la premi re :
SELECT [Date], Volume FROM Table1
UNION
SELECT [Date], Volume FROM Table2
UNION
SELECT [Date], Volume FROM Table3
...
SELECT [Date], Volume FROM Table30;
Et pour la seconde :
SELECT [Date], SUM(Volume)
FROM RequetePrecedente
GROUP BY [Date]
Voil ;)
-----Message d'origine-----
Bonjour tous, je cherche sommer, enregistrement par
enregistrement, des champs de plusieurs tables (60
tables ...) ayant
la m me structure et se trouvant dans la m me base :
"Maxence HUBICHE" <nospam wrote in message news:<009e01c3c0dc$0d789410$...
Si tu veux utiliser UNION, tu devras faire 2 requ tes : -Celle qui fait l'union -Celle qui fait la somme.
Ce qui te donnera pour la premi re : SELECT [Date], Volume FROM Table1 UNION SELECT [Date], Volume FROM Table2 UNION SELECT [Date], Volume FROM Table3 ... SELECT [Date], Volume FROM Table30;
Et pour la seconde : SELECT [Date], SUM(Volume) FROM RequetePrecedente GROUP BY [Date]
Voil ;)
-----Message d'origine----- Bonjour tous, je cherche sommer, enregistrement par enregistrement, des champs de plusieurs tables (60 tables ...) ayant
la m me structure et se trouvant dans la m me base :
Ca doit tre simple, mais j'ai perdu une demi-journ e chercher sur
le net ... si quelqu'un a une id e, je suis preneur. Merci tous.
.
Merci Maxence, J'essaye ça de ce pas et je te reviens.
pubdespierre
"Maxence HUBICHE" <nospam wrote in message news:<009e01c3c0dc$0d789410$...
Si tu veux utiliser UNION, tu devras faire 2 requ tes : -Celle qui fait l'union -Celle qui fait la somme.
Ce qui te donnera pour la premi re : SELECT [Date], Volume FROM Table1 UNION SELECT [Date], Volume FROM Table2 UNION SELECT [Date], Volume FROM Table3 ... SELECT [Date], Volume FROM Table30;
Et pour la seconde : SELECT [Date], SUM(Volume) FROM RequetePrecedente GROUP BY [Date]
Voil ;)
-----Message d'origine----- Bonjour tous, je cherche sommer, enregistrement par enregistrement, des champs de plusieurs tables (60 tables ...) ayant
la m me structure et se trouvant dans la m me base :
Ca doit tre simple, mais j'ai perdu une demi-journ e chercher sur
le net ... si quelqu'un a une id e, je suis preneur. Merci tous.
.
Ca fonctionne ! J'ai créé mes deux requêtes SQL comme tu le décris, je n'ai plus qu'à les appeler via VBA Excel avec la fonction SQLRequest (si si, j'ai réussi à installer XLODBC.XLA ...), et j'aurai quelque chose de propre.
Merci de ton aide, tu me retires une grosse épine du pied Maxence.
"Maxence HUBICHE" <nospam mhubiche@club-internet.fr> wrote in message news:<009e01c3c0dc$0d789410$a401280a@phx.gbl>...
Si tu veux utiliser UNION, tu devras faire 2 requ tes :
-Celle qui fait l'union
-Celle qui fait la somme.
Ce qui te donnera pour la premi re :
SELECT [Date], Volume FROM Table1
UNION
SELECT [Date], Volume FROM Table2
UNION
SELECT [Date], Volume FROM Table3
...
SELECT [Date], Volume FROM Table30;
Et pour la seconde :
SELECT [Date], SUM(Volume)
FROM RequetePrecedente
GROUP BY [Date]
Voil ;)
-----Message d'origine-----
Bonjour tous, je cherche sommer, enregistrement par
enregistrement, des champs de plusieurs tables (60
tables ...) ayant
la m me structure et se trouvant dans la m me base :
Ca doit tre simple, mais j'ai perdu une demi-journ e
chercher sur
le net ... si quelqu'un a une id e, je suis preneur.
Merci tous.
.
Ca fonctionne ! J'ai créé mes deux requêtes SQL comme tu le décris, je
n'ai plus qu'à les appeler via VBA Excel avec la fonction SQLRequest
(si si, j'ai réussi à installer XLODBC.XLA ...), et j'aurai quelque
chose de propre.
Merci de ton aide, tu me retires une grosse épine du pied Maxence.
"Maxence HUBICHE" <nospam wrote in message news:<009e01c3c0dc$0d789410$...
Si tu veux utiliser UNION, tu devras faire 2 requ tes : -Celle qui fait l'union -Celle qui fait la somme.
Ce qui te donnera pour la premi re : SELECT [Date], Volume FROM Table1 UNION SELECT [Date], Volume FROM Table2 UNION SELECT [Date], Volume FROM Table3 ... SELECT [Date], Volume FROM Table30;
Et pour la seconde : SELECT [Date], SUM(Volume) FROM RequetePrecedente GROUP BY [Date]
Voil ;)
-----Message d'origine----- Bonjour tous, je cherche sommer, enregistrement par enregistrement, des champs de plusieurs tables (60 tables ...) ayant
la m me structure et se trouvant dans la m me base :
Ca doit tre simple, mais j'ai perdu une demi-journ e chercher sur
le net ... si quelqu'un a une id e, je suis preneur. Merci tous.
.
Ca fonctionne ! J'ai créé mes deux requêtes SQL comme tu le décris, je n'ai plus qu'à les appeler via VBA Excel avec la fonction SQLRequest (si si, j'ai réussi à installer XLODBC.XLA ...), et j'aurai quelque chose de propre.
Merci de ton aide, tu me retires une grosse épine du pied Maxence.
pubdespierre
Je ne peux pas écrire une requète en dur sur tant de tables ... hélas ça fonctionne bien tant que le nombre de tables est "raisonnable" ... mais comme j'ai une soixantaine de tables à unir, Access me renvoie "Requète trop complexe" ...
Existe-t-il un moyen, dans le "FROM" de l'instruction "SELECT", d'indiquer que l'on voudrait travailler sur toutes les tables de la base ? Ou peut-être existe-il une façon sioux de programmer la "UNION" ... d'autant plus qu'il vaut mieux avoir une requète propre et dynamique parce que le jour où j'ajoute, ou je supprime une table, je préfère être tranquille ...
ps: je sais qu'on peut saussissonner la requète sur 60 tables en plusieurs requètes, mais j'aimerais d'abord savoir si on peut faire quelquechose de propre.
Merci à tous !
Je ne peux pas écrire une requète en dur sur tant de tables ... hélas
ça fonctionne bien tant que le nombre de tables est "raisonnable" ...
mais comme j'ai une soixantaine de tables à unir, Access me renvoie
"Requète trop complexe" ...
Existe-t-il un moyen, dans le "FROM" de l'instruction "SELECT",
d'indiquer que l'on voudrait travailler sur toutes les tables de la
base ?
Ou peut-être existe-il une façon sioux de programmer la "UNION" ...
d'autant plus qu'il vaut mieux avoir une requète propre et dynamique
parce que le jour où j'ajoute, ou je supprime une table, je préfère
être tranquille ...
ps: je sais qu'on peut saussissonner la requète sur 60 tables en
plusieurs requètes, mais j'aimerais d'abord savoir si on peut faire
quelquechose de propre.
Je ne peux pas écrire une requète en dur sur tant de tables ... hélas ça fonctionne bien tant que le nombre de tables est "raisonnable" ... mais comme j'ai une soixantaine de tables à unir, Access me renvoie "Requète trop complexe" ...
Existe-t-il un moyen, dans le "FROM" de l'instruction "SELECT", d'indiquer que l'on voudrait travailler sur toutes les tables de la base ? Ou peut-être existe-il une façon sioux de programmer la "UNION" ... d'autant plus qu'il vaut mieux avoir une requète propre et dynamique parce que le jour où j'ajoute, ou je supprime une table, je préfère être tranquille ...
ps: je sais qu'on peut saussissonner la requète sur 60 tables en plusieurs requètes, mais j'aimerais d'abord savoir si on peut faire quelquechose de propre.
Merci à tous !
pubdespierre
(Tixu Oty) wrote in message news:...
Je ne peux pas écrire une requète en dur sur tant de tables ... hélas ça fonctionne bien tant que le nombre de tables est "raisonnable" ... mais comme j'ai une soixantaine de tables à unir, Access me renvoie "Requète trop complexe" ...
Existe-t-il un moyen, dans le "FROM" de l'instruction "SELECT", d'indiquer que l'on voudrait travailler sur toutes les tables de la base ? Ou peut-être existe-il une façon sioux de programmer la "UNION" ... d'autant plus qu'il vaut mieux avoir une requète propre et dynamique parce que le jour où j'ajoute, ou je supprime une table, je préfère être tranquille ...
ps: je sais qu'on peut saussissonner la requète sur 60 tables en plusieurs requètes, mais j'aimerais d'abord savoir si on peut faire quelquechose de propre.
Merci à tous !
pas d'idée ?
pubdespierre@wanadoo.fr (Tixu Oty) wrote in message news:<1b713c25.0312150253.76c9972a@posting.google.com>...
Je ne peux pas écrire une requète en dur sur tant de tables ... hélas
ça fonctionne bien tant que le nombre de tables est "raisonnable" ...
mais comme j'ai une soixantaine de tables à unir, Access me renvoie
"Requète trop complexe" ...
Existe-t-il un moyen, dans le "FROM" de l'instruction "SELECT",
d'indiquer que l'on voudrait travailler sur toutes les tables de la
base ?
Ou peut-être existe-il une façon sioux de programmer la "UNION" ...
d'autant plus qu'il vaut mieux avoir une requète propre et dynamique
parce que le jour où j'ajoute, ou je supprime une table, je préfère
être tranquille ...
ps: je sais qu'on peut saussissonner la requète sur 60 tables en
plusieurs requètes, mais j'aimerais d'abord savoir si on peut faire
quelquechose de propre.
Je ne peux pas écrire une requète en dur sur tant de tables ... hélas ça fonctionne bien tant que le nombre de tables est "raisonnable" ... mais comme j'ai une soixantaine de tables à unir, Access me renvoie "Requète trop complexe" ...
Existe-t-il un moyen, dans le "FROM" de l'instruction "SELECT", d'indiquer que l'on voudrait travailler sur toutes les tables de la base ? Ou peut-être existe-il une façon sioux de programmer la "UNION" ... d'autant plus qu'il vaut mieux avoir une requète propre et dynamique parce que le jour où j'ajoute, ou je supprime une table, je préfère être tranquille ...
ps: je sais qu'on peut saussissonner la requète sur 60 tables en plusieurs requètes, mais j'aimerais d'abord savoir si on peut faire quelquechose de propre.
Merci à tous !
pas d'idée ?
Rv
Salut,
Les spec d'access disent: 64000 caractères pour une requête et 32 tables pour une requête. C'est la limite de 32 tables qui coince.
On pourrait contourner en VBA comme ceci:
Créer une table pour la requête (tempo) Pour chaque table concernée (strTable) Lancer la requête "INSERT INTO tempo([Date], Volume) SELECT [Date], Volume FROM " & strTable Fpour Lancer la requête "SELECT [Date], SUM(Volume) FROM tempo GROUP BY [Date]" Supprimer la table pour la requête (tempo)
Il manque le moyen d'identifier les tables concernées! Nom? Description? Toutes sauf les tables systèmes?, ...
A+
Rv
"Tixu Oty" a écrit dans le message de news:
(Tixu Oty) wrote in message news:...
Je ne peux pas écrire une requète en dur sur tant de tables ... hélas ça fonctionne bien tant que le nombre de tables est "raisonnable" ... mais comme j'ai une soixantaine de tables à unir, Access me renvoie "Requète trop complexe" ...
Existe-t-il un moyen, dans le "FROM" de l'instruction "SELECT", d'indiquer que l'on voudrait travailler sur toutes les tables de la base ? Ou peut-être existe-il une façon sioux de programmer la "UNION" ... d'autant plus qu'il vaut mieux avoir une requète propre et dynamique parce que le jour où j'ajoute, ou je supprime une table, je préfère être tranquille ...
ps: je sais qu'on peut saussissonner la requète sur 60 tables en plusieurs requètes, mais j'aimerais d'abord savoir si on peut faire quelquechose de propre.
Merci à tous !
pas d'idée ?
Salut,
Les spec d'access disent:
64000 caractères pour une requête et 32 tables pour une requête.
C'est la limite de 32 tables qui coince.
On pourrait contourner en VBA comme ceci:
Créer une table pour la requête (tempo)
Pour chaque table concernée (strTable)
Lancer la requête "INSERT INTO tempo([Date], Volume) SELECT
[Date], Volume FROM " & strTable
Fpour
Lancer la requête "SELECT [Date], SUM(Volume) FROM tempo GROUP BY
[Date]"
Supprimer la table pour la requête (tempo)
Il manque le moyen d'identifier les tables concernées! Nom? Description?
Toutes sauf les tables systèmes?, ...
A+
Rv
"Tixu Oty" <pubdespierre@wanadoo.fr> a écrit dans le message de
news:1b713c25.0312160028.6e16fc39@posting.google.com...
pubdespierre@wanadoo.fr (Tixu Oty) wrote in message
news:<1b713c25.0312150253.76c9972a@posting.google.com>...
Je ne peux pas écrire une requète en dur sur tant de tables ... hélas
ça fonctionne bien tant que le nombre de tables est "raisonnable" ...
mais comme j'ai une soixantaine de tables à unir, Access me renvoie
"Requète trop complexe" ...
Existe-t-il un moyen, dans le "FROM" de l'instruction "SELECT",
d'indiquer que l'on voudrait travailler sur toutes les tables de la
base ?
Ou peut-être existe-il une façon sioux de programmer la "UNION" ...
d'autant plus qu'il vaut mieux avoir une requète propre et dynamique
parce que le jour où j'ajoute, ou je supprime une table, je préfère
être tranquille ...
ps: je sais qu'on peut saussissonner la requète sur 60 tables en
plusieurs requètes, mais j'aimerais d'abord savoir si on peut faire
quelquechose de propre.
Les spec d'access disent: 64000 caractères pour une requête et 32 tables pour une requête. C'est la limite de 32 tables qui coince.
On pourrait contourner en VBA comme ceci:
Créer une table pour la requête (tempo) Pour chaque table concernée (strTable) Lancer la requête "INSERT INTO tempo([Date], Volume) SELECT [Date], Volume FROM " & strTable Fpour Lancer la requête "SELECT [Date], SUM(Volume) FROM tempo GROUP BY [Date]" Supprimer la table pour la requête (tempo)
Il manque le moyen d'identifier les tables concernées! Nom? Description? Toutes sauf les tables systèmes?, ...
A+
Rv
"Tixu Oty" a écrit dans le message de news:
(Tixu Oty) wrote in message news:...
Je ne peux pas écrire une requète en dur sur tant de tables ... hélas ça fonctionne bien tant que le nombre de tables est "raisonnable" ... mais comme j'ai une soixantaine de tables à unir, Access me renvoie "Requète trop complexe" ...
Existe-t-il un moyen, dans le "FROM" de l'instruction "SELECT", d'indiquer que l'on voudrait travailler sur toutes les tables de la base ? Ou peut-être existe-il une façon sioux de programmer la "UNION" ... d'autant plus qu'il vaut mieux avoir une requète propre et dynamique parce que le jour où j'ajoute, ou je supprime une table, je préfère être tranquille ...
ps: je sais qu'on peut saussissonner la requète sur 60 tables en plusieurs requètes, mais j'aimerais d'abord savoir si on peut faire quelquechose de propre.
Merci à tous !
pas d'idée ?
pubdespierre
Merci beaucoup Hervé, J'ai "bourriné" en créant deux requêtes sur 30 tables chaque, en inscrivant leur nom en dur en SQL sur ACCESS. C'est lourd et pas dynamique du tout : le jour où j'ajoute une table, pas intérêt e l'oublier dans mes requêtes SQL ... Je vais étudier ta solution qui me parait de loin beaucoup plus propre et plus sure.
A plus tard. Merci encore pour ton aide précieuse.
Merci beaucoup Hervé,
J'ai "bourriné" en créant deux requêtes sur 30 tables chaque, en
inscrivant leur nom en dur en SQL sur ACCESS. C'est lourd et pas
dynamique du tout : le jour où j'ajoute une table, pas intérêt e
l'oublier dans mes requêtes SQL ...
Je vais étudier ta solution qui me parait de loin beaucoup plus
propre et plus sure.
A plus tard. Merci encore pour ton aide précieuse.
Merci beaucoup Hervé, J'ai "bourriné" en créant deux requêtes sur 30 tables chaque, en inscrivant leur nom en dur en SQL sur ACCESS. C'est lourd et pas dynamique du tout : le jour où j'ajoute une table, pas intérêt e l'oublier dans mes requêtes SQL ... Je vais étudier ta solution qui me parait de loin beaucoup plus propre et plus sure.
A plus tard. Merci encore pour ton aide précieuse.