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

Requête union ???

10 réponses
Avatar
Kim
Bonjour à tous !!!

Voici mes tables
Table1
Groupe
Activite1
Presence1
...
Table2
Groupe
Activite2
Presence2
...ainsi de suite...

Ce que je voudrais, c'est de faire une requête dont le résultat serait le
suivant :
RequêteVoulue
Groupe
Activité (les activités de activite1, activite2, ...)
Presence (enregistrements de presence1, presence2, etc)

Je crois que la requête union est peut-être une solution, mais mon problème
est que je ne connaîs rien en VBA ... est-ce qu'il y aurait un moyen plus
simple ???

Merci d'avance
Kim

10 réponses

Avatar
Tisane
Bonjour Kim,

Voici mes tables
Table1
Groupe
Activite1
Presence1
...
Table2
Groupe
Activite2
Presence2
...ainsi de suite...

Ce que je voudrais, c'est de faire une requête dont le résultat serait le
suivant :
RequêteVoulue
Groupe
Activité (les activités de activite1, activite2, ...)
Presence (enregistrements de presence1, presence2, etc)

Je crois que la requête union est peut-être une solution, mais mon
problème
est que je ne connaîs rien en VBA ... est-ce qu'il y aurait un moyen plus
simple ???


Une requête Union n'est pas du VBA mais du SQL (un langage de requête
structuré paraît-il ;-)
Mais, sauf erreur de compréhension, pour obtenir ce que tu veux, tu peux
faire une simple requête basée sur toutes les tables concernées. Elles
doivent être liées par le champ commun (Groupe a prirori). Tu obtiendras une
ligne par groupe avec les activités et présences correspondantes :
groupe, activite1, presence1, activite2, presence2, etc.

Cela dit, je crains que tu sois mal parti(e) avec x tables de structure
identique.
Dans la base que tu as créée, tu dois répéter le nom des groupes je suppose.
Ce n'est pas correct.
Soit tu mets tout dans la même table si le nombre d'activités et présences
est limité et fixe. Pas très pro mais jouable si tu as par exemple 5
activités maximum, cela te donnerait quelque chose comme le résultat de la
requête ci-dessus (une ligne par groupe).

Soit, tu crées 3 tables seulement :
- une tables T_Groupes (avec un Id_Groupe et le nom des groupes)
- une table T_Activites (avec un Id_Activite et le nom des activités)
- une table T_Groupes_Activites (avec Id_Groupe, Id_Activite et le champ
Presence)
Ainsi, tu relies les groupes et les activités dans la 3e table, tu peux en
ajouter autant que tu veux et les requêtes sont simplifiées.
Cette méthode, un peu plus complexe à mettre en oeuvre au départ, est plus
professionnelle (notamment, chaque groupe n'est cité qu'une fois) et s'avère
beaucoup plus souple à terme.

--
Tisane

Avatar
Kim
Merci beaucoup de m'avoir répondu,

Je ne peux pas changer la structure de la base pour diverses raisons ...
mais concernant la requête qui relierait toutes les tables, j'obtiendrait
autant de champs qu'il y en a dans chaque table ... j'aimerais plutôt que
tous les champs présence de chaque table soient réunis dans un seul champ
puisqu'ils ont les mêmes valeurs ... ça serait une sorte de requête qui
regrouperait tous les enregistrements des tables, mais avec le même nombre de
champs que dans une seule table (c-a-d groupe, activité, présence, ...)

Merci encore
Kim


Bonjour Kim,

Voici mes tables
Table1
Groupe
Activite1
Presence1
...
Table2
Groupe
Activite2
Presence2
...ainsi de suite...

Ce que je voudrais, c'est de faire une requête dont le résultat serait le
suivant :
RequêteVoulue
Groupe
Activité (les activités de activite1, activite2, ...)
Presence (enregistrements de presence1, presence2, etc)

Je crois que la requête union est peut-être une solution, mais mon
problème
est que je ne connaîs rien en VBA ... est-ce qu'il y aurait un moyen plus
simple ???


Une requête Union n'est pas du VBA mais du SQL (un langage de requête
structuré paraît-il ;-)
Mais, sauf erreur de compréhension, pour obtenir ce que tu veux, tu peux
faire une simple requête basée sur toutes les tables concernées. Elles
doivent être liées par le champ commun (Groupe a prirori). Tu obtiendras une
ligne par groupe avec les activités et présences correspondantes :
groupe, activite1, presence1, activite2, presence2, etc.

Cela dit, je crains que tu sois mal parti(e) avec x tables de structure
identique.
Dans la base que tu as créée, tu dois répéter le nom des groupes je suppose.
Ce n'est pas correct.
Soit tu mets tout dans la même table si le nombre d'activités et présences
est limité et fixe. Pas très pro mais jouable si tu as par exemple 5
activités maximum, cela te donnerait quelque chose comme le résultat de la
requête ci-dessus (une ligne par groupe).

Soit, tu crées 3 tables seulement :
- une tables T_Groupes (avec un Id_Groupe et le nom des groupes)
- une table T_Activites (avec un Id_Activite et le nom des activités)
- une table T_Groupes_Activites (avec Id_Groupe, Id_Activite et le champ
Presence)
Ainsi, tu relies les groupes et les activités dans la 3e table, tu peux en
ajouter autant que tu veux et les requêtes sont simplifiées.
Cette méthode, un peu plus complexe à mettre en oeuvre au départ, est plus
professionnelle (notamment, chaque groupe n'est cité qu'une fois) et s'avère
beaucoup plus souple à terme.

--
Tisane





Avatar
Tisane

Je ne peux pas changer la structure de la base pour diverses raisons ...
mais concernant la requête qui relierait toutes les tables, j'obtiendrait
autant de champs qu'il y en a dans chaque table ... j'aimerais plutôt que
tous les champs présence de chaque table soient réunis dans un seul champ
puisqu'ils ont les mêmes valeurs ... ça serait une sorte de requête qui
regrouperait tous les enregistrements des tables, mais avec le même nombre
de
champs que dans une seule table (c-a-d groupe, activité, présence, ...)


Si présence a la même valeur, tu prends le champ d'une seule table dans ta
requête.
Pour les activités, tu peux utiliser la concaténation :
Activité:activite1&", "&activite2&", "&activite3 etc.

Mais je ne suis pas sûre d'avoir compris.

--
Tisane


Bonjour Kim,

Voici mes tables
Table1
Groupe
Activite1
Presence1
...
Table2
Groupe
Activite2
Presence2
...ainsi de suite...

Ce que je voudrais, c'est de faire une requête dont le résultat serait
le
suivant :
RequêteVoulue
Groupe
Activité (les activités de activite1, activite2, ...)
Presence (enregistrements de presence1, presence2, etc)

Je crois que la requête union est peut-être une solution, mais mon
problème
est que je ne connaîs rien en VBA ... est-ce qu'il y aurait un moyen
plus
simple ???


Une requête Union n'est pas du VBA mais du SQL (un langage de requête
structuré paraît-il ;-)
Mais, sauf erreur de compréhension, pour obtenir ce que tu veux, tu peux
faire une simple requête basée sur toutes les tables concernées. Elles
doivent être liées par le champ commun (Groupe a prirori). Tu obtiendras
une
ligne par groupe avec les activités et présences correspondantes :
groupe, activite1, presence1, activite2, presence2, etc.

Cela dit, je crains que tu sois mal parti(e) avec x tables de structure
identique.
Dans la base que tu as créée, tu dois répéter le nom des groupes je
suppose.
Ce n'est pas correct.
Soit tu mets tout dans la même table si le nombre d'activités et
présences
est limité et fixe. Pas très pro mais jouable si tu as par exemple 5
activités maximum, cela te donnerait quelque chose comme le résultat de
la
requête ci-dessus (une ligne par groupe).

Soit, tu crées 3 tables seulement :
- une tables T_Groupes (avec un Id_Groupe et le nom des groupes)
- une table T_Activites (avec un Id_Activite et le nom des activités)
- une table T_Groupes_Activites (avec Id_Groupe, Id_Activite et le champ
Presence)
Ainsi, tu relies les groupes et les activités dans la 3e table, tu peux
en
ajouter autant que tu veux et les requêtes sont simplifiées.
Cette méthode, un peu plus complexe à mettre en oeuvre au départ, est
plus
professionnelle (notamment, chaque groupe n'est cité qu'une fois) et
s'avère
beaucoup plus souple à terme.

--
Tisane





Avatar
Michel_D
Bonjour,

Regarde si cette requête te donne le résultat souhaité

SELECT T.Groupe, T.Activite1 AS Activite, T.Presence1 AS Presence
FROM Table1 AS T
UNION SELECT T.Groupe, T.Activite2, T.Presence2
FROM Table2 AS T;


"Kim" a écrit dans le message de news:
Merci beaucoup de m'avoir répondu,

Je ne peux pas changer la structure de la base pour diverses raisons ...
mais concernant la requête qui relierait toutes les tables, j'obtiendrait
autant de champs qu'il y en a dans chaque table ... j'aimerais plutôt que
tous les champs présence de chaque table soient réunis dans un seul champ
puisqu'ils ont les mêmes valeurs ... ça serait une sorte de requête qui
regrouperait tous les enregistrements des tables, mais avec le même nombre de
champs que dans une seule table (c-a-d groupe, activité, présence, ...)

Merci encore
Kim


Bonjour Kim,

Voici mes tables
Table1
Groupe
Activite1
Presence1
...
Table2
Groupe
Activite2
Presence2
...ainsi de suite...

Ce que je voudrais, c'est de faire une requête dont le résultat serait le
suivant :
RequêteVoulue
Groupe
Activité (les activités de activite1, activite2, ...)
Presence (enregistrements de presence1, presence2, etc)

Je crois que la requête union est peut-être une solution, mais mon
problème
est que je ne connaîs rien en VBA ... est-ce qu'il y aurait un moyen plus
simple ???


Une requête Union n'est pas du VBA mais du SQL (un langage de requête
structuré paraît-il ;-)
Mais, sauf erreur de compréhension, pour obtenir ce que tu veux, tu peux
faire une simple requête basée sur toutes les tables concernées. Elles
doivent être liées par le champ commun (Groupe a prirori). Tu obtiendras une
ligne par groupe avec les activités et présences correspondantes :
groupe, activite1, presence1, activite2, presence2, etc.

Cela dit, je crains que tu sois mal parti(e) avec x tables de structure
identique.
Dans la base que tu as créée, tu dois répéter le nom des groupes je suppose.
Ce n'est pas correct.
Soit tu mets tout dans la même table si le nombre d'activités et présences
est limité et fixe. Pas très pro mais jouable si tu as par exemple 5
activités maximum, cela te donnerait quelque chose comme le résultat de la
requête ci-dessus (une ligne par groupe).

Soit, tu crées 3 tables seulement :
- une tables T_Groupes (avec un Id_Groupe et le nom des groupes)
- une table T_Activites (avec un Id_Activite et le nom des activités)
- une table T_Groupes_Activites (avec Id_Groupe, Id_Activite et le champ
Presence)
Ainsi, tu relies les groupes et les activités dans la 3e table, tu peux en
ajouter autant que tu veux et les requêtes sont simplifiées.
Cette méthode, un peu plus complexe à mettre en oeuvre au départ, est plus
professionnelle (notamment, chaque groupe n'est cité qu'une fois) et s'avère
beaucoup plus souple à terme.

--
Tisane







Avatar
Tisane
Bonjour Michel_D,

Regarde si cette requête te donne le résultat souhaité
SELECT T.Groupe, T.Activite1 AS Activite, T.Presence1 AS Presence
FROM Table1 AS T
UNION SELECT T.Groupe, T.Activite2, T.Presence2
FROM Table2 AS T;


C'est le jour des unions et des liens, aujourd'hui ;-)

--
Tisane

"Kim" a écrit dans le message de
news:
Merci beaucoup de m'avoir répondu,

Je ne peux pas changer la structure de la base pour diverses raisons ...
mais concernant la requête qui relierait toutes les tables, j'obtiendrait
autant de champs qu'il y en a dans chaque table ... j'aimerais plutôt que
tous les champs présence de chaque table soient réunis dans un seul champ
puisqu'ils ont les mêmes valeurs ... ça serait une sorte de requête qui
regrouperait tous les enregistrements des tables, mais avec le même
nombre de
champs que dans une seule table (c-a-d groupe, activité, présence, ...)

Merci encore
Kim
[...]




Avatar
Kim
Bonjour,

Merci de me donner un coup de main, j'apprécie !!!

La première solution n'est pas exactement ce que je veux. Ça donne bien
toutes les valeurs dans un seul champ, mais le problème est que ça se met
dans le même enregistrement.

Pour la seconde solution, je ne suis pas certaine si je place la commande au
bon endroit (hihi) ... désolé si c'est vraiment débutant comme question ....
j'ai ouvert une nouvelle requête en mode création et j'ai mis la commande à
la ligne "champ". Il y a un message d'erreur qui me dit de mettre la
sous-requête entre parenthèse. Quand je met des parenthèses et que j'exécute
la requète, un autre message apparait en disant "Cette opération n'est pas
autorisée dans les sous-requêtes".

Merci de m'aider, c'est vraiment gentil !
Kim


Bonjour Michel_D,

Regarde si cette requête te donne le résultat souhaité
SELECT T.Groupe, T.Activite1 AS Activite, T.Presence1 AS Presence
FROM Table1 AS T
UNION SELECT T.Groupe, T.Activite2, T.Presence2
FROM Table2 AS T;


C'est le jour des unions et des liens, aujourd'hui ;-)

--
Tisane

"Kim" a écrit dans le message de
news:
Merci beaucoup de m'avoir répondu,

Je ne peux pas changer la structure de la base pour diverses raisons ...
mais concernant la requête qui relierait toutes les tables, j'obtiendrait
autant de champs qu'il y en a dans chaque table ... j'aimerais plutôt que
tous les champs présence de chaque table soient réunis dans un seul champ
puisqu'ils ont les mêmes valeurs ... ça serait une sorte de requête qui
regrouperait tous les enregistrements des tables, mais avec le même
nombre de
champs que dans une seule table (c-a-d groupe, activité, présence, ...)

Merci encore
Kim
[...]








Avatar
Tisane


La première solution n'est pas exactement ce que je veux. Ça donne bien
toutes les valeurs dans un seul champ, mais le problème est que ça se met
dans le même enregistrement.

Pour la seconde solution, je ne suis pas certaine si je place la commande
au
bon endroit (hihi) ... désolé si c'est vraiment débutant comme question
....
j'ai ouvert une nouvelle requête en mode création et j'ai mis la commande
à
la ligne "champ". Il y a un message d'erreur qui me dit de mettre la
sous-requête entre parenthèse. Quand je met des parenthèses et que
j'exécute
la requète, un autre message apparait en disant "Cette opération n'est pas
autorisée dans les sous-requêtes".


Pour mettre en place la solution de Michel (au cas où il tarderait à
répondre) qui va te créer autant de lignes avec le même groupe :
- crée une requête sans choisir aucune table
- clique sur l'icône SQL à gauche dans la barre d'outils
- colle son code
On ne voit pas les requêtes UNION en mode design.

--
Tisane


Bonjour Michel_D,

Regarde si cette requête te donne le résultat souhaité
SELECT T.Groupe, T.Activite1 AS Activite, T.Presence1 AS Presence
FROM Table1 AS T
UNION SELECT T.Groupe, T.Activite2, T.Presence2
FROM Table2 AS T;


C'est le jour des unions et des liens, aujourd'hui ;-)

--
Tisane

"Kim" a écrit dans le message de
news:
Merci beaucoup de m'avoir répondu,

Je ne peux pas changer la structure de la base pour diverses raisons
...
mais concernant la requête qui relierait toutes les tables,
j'obtiendrait
autant de champs qu'il y en a dans chaque table ... j'aimerais plutôt
que
tous les champs présence de chaque table soient réunis dans un seul
champ
puisqu'ils ont les mêmes valeurs ... ça serait une sorte de requête
qui
regrouperait tous les enregistrements des tables, mais avec le même
nombre de
champs que dans une seule table (c-a-d groupe, activité, présence,
...)

Merci encore
Kim
[...]








Avatar
Kim
Wow ça marche !!!
Merci beaucoup, je ne pensais jamais que je pourrais faire ça avec Access,
y'a pas à dire, c'est vrai qu'on peut tout faire !!!!!
Merci beaucoup pour l'aide, c'est très apprécié !!
Kim





La première solution n'est pas exactement ce que je veux. Ça donne bien
toutes les valeurs dans un seul champ, mais le problème est que ça se met
dans le même enregistrement.

Pour la seconde solution, je ne suis pas certaine si je place la commande
au
bon endroit (hihi) ... désolé si c'est vraiment débutant comme question
....
j'ai ouvert une nouvelle requête en mode création et j'ai mis la commande
à
la ligne "champ". Il y a un message d'erreur qui me dit de mettre la
sous-requête entre parenthèse. Quand je met des parenthèses et que
j'exécute
la requète, un autre message apparait en disant "Cette opération n'est pas
autorisée dans les sous-requêtes".


Pour mettre en place la solution de Michel (au cas où il tarderait à
répondre) qui va te créer autant de lignes avec le même groupe :
- crée une requête sans choisir aucune table
- clique sur l'icône SQL à gauche dans la barre d'outils
- colle son code
On ne voit pas les requêtes UNION en mode design.

--
Tisane


Bonjour Michel_D,

Regarde si cette requête te donne le résultat souhaité
SELECT T.Groupe, T.Activite1 AS Activite, T.Presence1 AS Presence
FROM Table1 AS T
UNION SELECT T.Groupe, T.Activite2, T.Presence2
FROM Table2 AS T;


C'est le jour des unions et des liens, aujourd'hui ;-)

--
Tisane

"Kim" a écrit dans le message de
news:
Merci beaucoup de m'avoir répondu,

Je ne peux pas changer la structure de la base pour diverses raisons
...
mais concernant la requête qui relierait toutes les tables,
j'obtiendrait
autant de champs qu'il y en a dans chaque table ... j'aimerais plutôt
que
tous les champs présence de chaque table soient réunis dans un seul
champ
puisqu'ils ont les mêmes valeurs ... ça serait une sorte de requête
qui
regrouperait tous les enregistrements des tables, mais avec le même
nombre de
champs que dans une seule table (c-a-d groupe, activité, présence,
...)

Merci encore
Kim
[...]












Avatar
Michel_D


La première solution n'est pas exactement ce que je veux. Ça donne bien
toutes les valeurs dans un seul champ, mais le problème est que ça se met
dans le même enregistrement.

Pour la seconde solution, je ne suis pas certaine si je place la
commande au
bon endroit (hihi) ... désolé si c'est vraiment débutant comme
question ....
j'ai ouvert une nouvelle requête en mode création et j'ai mis la
commande à
la ligne "champ". Il y a un message d'erreur qui me dit de mettre la
sous-requête entre parenthèse. Quand je met des parenthèses et que
j'exécute
la requète, un autre message apparait en disant "Cette opération n'est
pas
autorisée dans les sous-requêtes".



Pour mettre en place la solution de Michel (au cas où il tarderait à
répondre) qui va te créer autant de lignes avec le même groupe :
- crée une requête sans choisir aucune table
- clique sur l'icône SQL à gauche dans la barre d'outils
- colle son code
On ne voit pas les requêtes UNION en mode design.



Merci d'avoir pris la relève.


Avatar
Tisane

Merci d'avoir pris la relève.


Avec plaisir ! En fait, c'était très intéressé, car je n'avais pas compris
la demande de Kim et ta réponse m'a "illuminée" ;-))
Je joins donc mes remerciements à ceux de Kim.

--
Tisane




La première solution n'est pas exactement ce que je veux. Ça donne bien
toutes les valeurs dans un seul champ, mais le problème est que ça se
met
dans le même enregistrement.

Pour la seconde solution, je ne suis pas certaine si je place la
commande au
bon endroit (hihi) ... désolé si c'est vraiment débutant comme question
....
j'ai ouvert une nouvelle requête en mode création et j'ai mis la
commande à
la ligne "champ". Il y a un message d'erreur qui me dit de mettre la
sous-requête entre parenthèse. Quand je met des parenthèses et que
j'exécute
la requète, un autre message apparait en disant "Cette opération n'est
pas
autorisée dans les sous-requêtes".



Pour mettre en place la solution de Michel (au cas où il tarderait à
répondre) qui va te créer autant de lignes avec le même groupe :
- crée une requête sans choisir aucune table
- clique sur l'icône SQL à gauche dans la barre d'outils
- colle son code
On ne voit pas les requêtes UNION en mode design.

--
Tisane