[SQL] Difficulté avec un LEFT JOIN

Bonjour à tous

Je travaille sous Access 2010 (je n’ai malheureusement pas le choix).

J’ai codé 2 requêtes qui font en réalité la même chose (les champs diffèrent un peu dans leurs noms mais fondamentalement c’est pareil) :

Requête 1 :

SELECT maTable11.concatTdbReport FROM (SELECT maTable1.concatTdbReport FROM (SELECT [TdB_Report].[Debit descendant/unique (kbits/s)]+[TdB_Report].[Type de produit]+[TdB_Report].[Gamme]+[TdB_Report].[TOTAL] as concatTdbReport FROM [TdB_Report]) as maTable1 GROUP BY concatTdbReport) as maTable11;

Requête 2 :

SELECT maTable22.concatRefDebit FROM (SELECT maTable2.concatRefDebit FROM (SELECT [Ref debit].[debits]+[Ref debit].[Type de produit]+[Ref debit].[Gamme]+[Ref debit].[TOTAL] as concatRefDebit FROM [Ref debit]) as maTable2 GROUP BY concatRefDebit) as maTable22;

J’ai testé, ces 2 requêtes fonctionnent très bien et me renvoient bien un seul champ sans doublons.
Jusque là, tout va bien.

Ensuite, j’ai tenté de faire un LEFT JOIN entre ces 2 requêtes avec le code suivant :

SELECT maTable11.concatTdbReport FROM (SELECT maTable1.concatTdbReport FROM (SELECT [TdB_Report].[Debit descendant/unique (kbits/s)]+[TdB_Report].[Type de produit]+[TdB_Report].[Gamme]+[TdB_Report].[TOTAL] as concatTdbReport FROM [TdB_Report]) as maTable1 GROUP BY concatTdbReport) as maTable11 LEFT JOIN (SELECT maTable22.concatRefDebit FROM (SELECT maTable2.concatRefDebit FROM (SELECT [Ref debit].[debits]+[Ref debit].[Type de produit]+[Ref debit].[Gamme]+[Ref debit].[TOTAL] as concatRefDebit FROM [Ref debit]) as maTable2 GROUP BY concatRefDebit) as maTable22) ON maTable11.concatTdbReport=maTable22.concatRefDebit;

Et là Access me renvoi l’erreur suivante :

J’ai beau chercher, je n’arrive pas à trouver pourquoi Access ne veut pas de cette requête.
Tout ce que j’ai fait, c’est copier/coller la requête 1, j’ai rajouté le “LEFT JOIN (”, j’ai copié/collé la requête 2, j’ai refermé la parenthèse, et j’ai rajouté la dernière ligne qui commence par “ON”. En toute logique, ça devrait fonctionner.

Est-ce que quelqu’un saurait m’aider ? Je suis vraiment bloqué depuis un moment là-dessus et si je comprends ça, je pense que ça m’aiderai beaucoup pour mes requêtes futures.

Merci à vous

OK c’est bon j’ai trouvé même pas 1 minute après avoir posté alors que ça faisait 2 heures que je bloquais dessus… C’est toujours comme ça :mrgreen: :angry-banghead:

En fait, le LEFT JOIN prend une table en paramètre, ou une requête qu’on met entre parenthèses.
Si on met une requête, il faut du coup la nommer avec un alias, car le nom/l’alias de la table qui est utilisée dans les parenthèses n’est pas hérité dans le LEFT JOIN.

Ma requête finale est donc la suivante :

SELECT maTable11.concatTdbReport,maTable222.concatRefDebit FROM (SELECT maTable1.concatTdbReport FROM (SELECT [TdB_Report].[Debit descendant/unique (kbits/s)]+[TdB_Report].[Type de produit]+[TdB_Report].[Gamme]+[TdB_Report].[TOTAL] as concatTdbReport FROM [TdB_Report]) as maTable1 GROUP BY concatTdbReport) as maTable11 LEFT JOIN (SELECT maTable22.concatRefDebit FROM (SELECT maTable2.concatRefDebit FROM (SELECT [Ref debit].[debits]+[Ref debit].[Type de produit]+[Ref debit].[Gamme]+[Ref debit].[TOTAL] as concatRefDebit FROM [Ref debit]) as maTable2 GROUP BY concatRefDebit) as maTable22) as maTable222 ON maTable11.concatTdbReport=maTable222.concatRefDebit;

Et là ça fonctionne exactement comme je veux :slightly_smiling:

En espérant que ça serve à d’autres… (ou à moi-même plus tard si jamais j’oublie comment faire !)