Requête microsoft query regroupement de certaines colonnes de 2 tables

poulie

XLDnaute Impliqué
Bonjour à tous,

Je rencontre un souci de rédaction de requête et malgré plusieurs essais je n'obtiens pas le résultat souhaité. D'où cette demande...
Dans un classeur j'ai 2 feuilles avec 1 tableau dans chaque avec des noms de champs identiques ou pas. Dans l'exemple joint, chaque table a des champs identiques.
Je souhaite avec Microsoft Query extraire un seul champ dates avec toutes les dates des 2 tables et extraire les colonnes sommes correspondantes. Je pense mieux préciser ma demande dans le classeur joint.
J'ai tenté avec UNION sans succès. L'objectif étant de créer un TCD.

Merci de ce que vous pourrez faire.
 

Pièces jointes

  • Essai.xlsx
    8.6 KB · Affichages: 73
  • Essai.xlsx
    8.6 KB · Affichages: 89
  • Essai.xlsx
    8.6 KB · Affichages: 90

chris

XLDnaute Barbatruc
Re : Requête microsoft query regroupement de certaines colonnes de 2 tables

Bonjour

Il faut combiner union et requête avec jointure externe :
Code:
SELECT `Feuil1$`.dates, `Feuil1$`.somme1, `Feuil2$`.somme2  FROM {oj `E:\ZZ_Tempo\Forums\Essai-1Msquery.xlsx`.`Feuil1$` `Feuil1$` LEFT OUTER JOIN `E:\ZZ_Tempo\Forums\Essai-1Msquery.xlsx`.`Feuil2$` `Feuil2$` ON `Feuil1$`.dates = `Feuil2$`.dates} union  SELECT `Feuil2$`.dates, `Feuil1$`.somme1, `Feuil2$`.somme2  FROM {oj `E:\ZZ_Tempo\Forums\Essai-1Msquery.xlsx`.`Feuil2$` `Feuil2$` LEFT OUTER JOIN `E:\ZZ_Tempo\Forums\Essai-1Msquery.xlsx`.`Feuil1$` `Feuil1$` ON `Feuil1$`.dates = `Feuil2$`.dates}

Chemin et nom de fichier et onglets à adapter
 

poulie

XLDnaute Impliqué
Re : Requête microsoft query regroupement de certaines colonnes de 2 tables

Bonjour chris,

Merci de te pencher sur mon problème.

J'ai donc tenté de recopier cette requête en l'adaptant sans succès. "Instruction sql non valide: Delet, Insert, Procédure, Select ou Update attendus".
Je voulais faire simple dans le classeur transmis mais les écritures sont en réalité: Feuille 1 équivaut à Externes et feuille 2 à interne. Et les écritures sommes équivalent à Nombre.

Voici la requête que je souhaite modifier:

SELECT Externes.Dates, Externes.Nombre, Internes.Dates, Internes.Nombre
FROM Externes Externes, Internes Internes

J'ai donc tenté la modification comme suit:

SELECT Externes.Dates, Externes.Nombre, Internes.Nombre FROM Externes Externes LEFT OUTER JOIN Internes Internes ON Externes.Dates = Internes.Dates union *SELECT Internes.Dates, Externes.Nombre, Internes.Nombre FROM Internes Internes LEFT OUTER JOIN Externes Externes ON Externes.Dates = Internes.Dates

Merci de ton aide
 

chris

XLDnaute Barbatruc
Re : Requête microsoft query regroupement de certaines colonnes de 2 tables

Re
Code:
SELECT `Externes$`.dates, `Externes$`.Nombre, `Internes$`.Nombre  FROM {oj `E:\ZZ_Tempo\Forums\Essai-1Msquery.xlsx`.`Externes$` `Externes$` LEFT OUTER JOIN `E:\ZZ_Tempo\Forums\Essai-1Msquery.xlsx`.`Internes$` `Internes$` ON `Externes$`.dates = `Internes$`.dates} union  SELECT `Internes$`.dates, `Externes$`.Nombre, `Internes$`.Nombre  FROM {oj `E:\ZZ_Tempo\Forums\Essai-1Msquery.xlsx`.`Internes$` `Internes$` LEFT OUTER JOIN `E:\ZZ_Tempo\Forums\Essai-1Msquery.xlsx`.`Externes$` `Externes$` ON `Externes$`.dates = `Internes$`.dates}

j'ai changé les nom des feuilles et des titres de colonne et cela marche

(j'ai retrouvé des requêtes à ton nom dans mon fatras : je t'ai donc déjà dépanné sur Msquery ;-=))
 

poulie

XLDnaute Impliqué
Re : Requête microsoft query regroupement de certaines colonnes de 2 tables

Bonjour Chris, Bonjour à tous,

En effet tu m'as déjà dépanné sur MSQuery. Cela me sert bien. Sur un site il y a bien des explications des opérateurs mais cette demande me dépasse.
J'ai donc mieux recopié ta proposition et l'extraction est bonne. Cependant, et c'est surement dû à un manque d'explications initiales mais le résultat final n'est pas celui escompté. Même en changeant le paramètre des champs dans le TCD (somme à la place de nombre).
J'ai donc plus précisément expliqué mon souhait. En fait, dans chaque table il y a plusieurs mêmes dates. Je souhaite extraire toutes les dates communes ou non des 2 tables pour au final créer un TCD (+ graphique) et effectuer des sommes.

Encore merci de ce que tu pourras faire.
 

Pièces jointes

  • Essai_2.xlsx
    9.7 KB · Affichages: 59

chris

XLDnaute Barbatruc
Re : Requête microsoft query regroupement de certaines colonnes de 2 tables

Re

Finalement j'ai eu le temps :
Code:
SELECT all  `Externes$`.dates, `Externes$`.Nombre, null   FROM `E:\ZZ_Tempo\Forums\Essai-1Msquery.xlsx`.`Externes$` `Externes$`union all SELECT `Internes$`.dates, null,`Internes$`.Nombre  FROM `E:\ZZ_Tempo\Forums\Essai-1Msquery.xlsx`.`Internes$` `Internes$` order by 1

Effectuer une somme sur les colonnes Nombre dans le TCD
 
Dernière édition:

poulie

XLDnaute Impliqué
Re : Requête microsoft query regroupement de certaines colonnes de 2 tables

Excellent!

Avec, qui plus est, une vitesse de calcul intéressante (fichier source: feuille 1 = 6600 lignes et feuille 2 = 4350).

Encore un grand merci à toi.
 

poulie

XLDnaute Impliqué
Re : Requête microsoft query regroupement de certaines colonnes de 2 tables

Bonjour à tous, Bonjour Chris,

Je profite de ce fil pour une autre question toujours avec ces tables.

J'ai donc une table "Internes" avec plusieurs colonnes.

Dans la seule colonne véhicules, il y a plusieurs numéros (de véhicules). Je souhaite à partir de ce seul champ extraire 2 autres champs avec conditions plus un champ km.arrivée qui ne pose pas de soucis.

La première condition pour les véhicules dont le numéro est < à 7 et pour l'autre condition > à 6.
Je n'arrive qu'à extraire les véhicules > à 6 avec WHERE.

SELECT Internes.Dates, Internes.Véhicules, Internes.`Km arrivée`, Internes.`Km en charge` FROM Internes Internes WHERE (Internes.Véhicules>6.0)

Est-ce que cela est d'ailleurs possible?. J'ai joint un classeur avec les explications.

Merci de ton aide
 

Pièces jointes

  • essai 2.xlsx
    12.3 KB · Affichages: 64
  • essai 2.xlsx
    12.3 KB · Affichages: 64
  • essai 2.xlsx
    12.3 KB · Affichages: 54
G

Guest

Guest
Re : Requête microsoft query regroupement de certaines colonnes de 2 tables

Bonjour,

Hello Chris:)

@Poulie: en créeant deux champs calculés, quelque chose comme ceci:

SELECT internes.Dates, Internes.`Km arrivée`, `Internes.Véhicules`*-(`Internes.Véhicules`<6) AS `véhicules <6`, `Internes.Véhicules`*-(`Internes.Véhicules`>6) AS `véhicules > 6`
FROM internes;

P.S. et les = 6?

A+
 
Dernière modification par un modérateur:

chris

XLDnaute Barbatruc
Re : Requête microsoft query regroupement de certaines colonnes de 2 tables

Bonjour
Coucou Hasco ;)

Poulie : pour le TCD il serait peut-être plus logique d'avoir dans la source une colonne type avec soit <=6, soit >6 ?

Hasco : je n'arrive, pas à ce que mes AS libellé soient pris en compte pas MsQuery. Il me semble qu'avant (version 2002) cela fonctionnait mais je n'en suis pas très sûre. As-tu une explication ou solution ?
 
G

Guest

Guest
Re : Requête microsoft query regroupement de certaines colonnes de 2 tables

Re,

Bonjour Chris,

Je viens de créer la table sous Access (2010) puis faire une MSQUERY dans excel avec cette Requête et cela fonctionne très bien (avec les crochets):

Code:
SELECT internes.Dates, internes.[Km arrivée], (internes.Véhicules*-(internes.Véhicules<=6)) AS [Véhicules<=6], (internes.Véhicules*-(internes.Véhicules>6) )AS [Véhicules>6]
FROM 
`C:\....\Truc.accdb`.internes internes;

Puis j'ai changé les crochet [] par de ` cela fonctionne également:
Code:
SELECT internes.Dates, internes.`Km arrivée`, (internes.Véhicules*-(internes.Véhicules<=6)) AS `Véhicules<=6`, (internes.Véhicules*-(internes.Véhicules>6) )AS `Véhicules>6`
FROM 
`C:\.....\Truc.accdb`.internes internes;

voilou.

bon après-midi
A+

P.S. as-tu testé sans les AS: (internes.Véhicules*-(internes.Véhicules>6) ) `Véhicules>6`
 

chris

XLDnaute Barbatruc
Re : Requête microsoft query regroupement de certaines colonnes de 2 tables

Re

Hasco, tu triches :eek: : si je passe par Access le AS marche mais là je requête direct sur les onglets Excel (regarde le #7) et cela ne marche pas !
 
G

Guest

Guest
Re : Requête microsoft query regroupement de certaines colonnes de 2 tables

Re,

On va bien finir par s'en sortir de cette histoire. Alors MSQUERY sur feuille Excel nommée "Source" et dans le même classeur. Ceci fonctionne, MSQUERY m'a simplement signalé l'obligation de mettre des Crochets pour le champ AS `Vehicules<=6`. J'ai donc mis AS [Vehicules<=6]
Code:
SELECT `Source$`.Dates, `Source$`.`Km arrivée`, (Véhicules*-(Véhicules<=6)) AS [Véhicules<=6], (Véhicules*-(Véhicules>6) )AS [Véhicules>6]
FROM `C:\.......\h_Poulie.xlsx`.`Source$` `Source$`

A+
P.S. ai utilisé le bouton SQL dans MSQUERY pour écrire la requête.
 
Dernière modification par un modérateur:

poulie

XLDnaute Impliqué
Re : Requête microsoft query regroupement de certaines colonnes de 2 tables

Bonjour Chris, Hasco,

Merci pour vos réponses.

J'ai donc testé directement sur le classeur source.

HASCO: j'ai testé ta proposition et lorsque je créé le TCD, et que je choisis nombre dans les paramètres, les zéros sont aussi comptabilisés. Dans le classeur joint, je montre ce que je souhaite dans les cellules jaunes. Quitte à créer un champ calculé pour la somme des 2 types de véhicules.

CHRIS: J'avais en effet pensé à distinguer les types de véhicules en 2 colonnes. Mais je ne souhaitais pas trop alourdir le tableau source et faciliter la saisie. J'ai donc testé avec 2 colonnes et les 2 types de véhicules. Pour les véhicules de type 1, j'ai là aussi la somme alors qu'il n'y a pas de zéros?.

Dans le classeur joint, j'ai laissé les extractions obtenues.

Merci encore de ce que vous pourrez faire.

Oups: s'il me comptait les zéros j'aurais + de 6600
 

Pièces jointes

  • essai 2.xlsx
    334.4 KB · Affichages: 60
  • essai 2.xlsx
    334.4 KB · Affichages: 82
  • essai 2.xlsx
    334.4 KB · Affichages: 80
Dernière édition:

Discussions similaires

Réponses
14
Affichages
352

Statistiques des forums

Discussions
314 450
Messages
2 109 727
Membres
110 552
dernier inscrit
jasson