# \[SQL\] Difficulté avec un LEFT JOIN

**URL:** <https://www.debian-fr.org/t/sql-difficulte-avec-un-left-join/63540>\
**Category:** Programmation\
**Created:** [Février 21, 2016, 8:49 UTC](https://www.debian-fr.org/t/sql-difficulte-avec-un-left-join/63540 "2016-02-21T20:49:28Z")\
**Posts on this page:** 2\
**Page:** 1

<div class="post-metadata">

**Author:** ![Cluxter](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/c/13edae/32.png) [@Cluxter](https://www.debian-fr.org/u/Cluxter)\
**Post date:** [Février 21, 2016, 8:49 UTC](https://www.debian-fr.org/t/sql-difficulte-avec-un-left-join/63540/1 "2016-02-21T20:49:28Z")

</div>

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 :

> [@](#):
>
> Erreur de syntaxe dans l’opération JOIN.

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 «&nbsp;LEFT JOIN (&nbsp;», 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 «&nbsp;ON&nbsp;». 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

---

<div class="post-metadata">

**Author:** ![Cluxter](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/c/13edae/32.png) [@Cluxter](https://www.debian-fr.org/u/Cluxter)\
**Post date:** [Février 21, 2016, 8:49 UTC](https://www.debian-fr.org/t/sql-difficulte-avec-un-left-join/63540/2 "2016-02-21T20:49:29Z")

</div>

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:](https://www.debian-fr.org/uploads/default/original/1X/cc83e9b583138e48ff45f96609046b06d06c7f9d.gif "Mr. Green") ![:angry-banghead:](https://www.debian-fr.org/uploads/default/original/1X/03590d98a359a447ce7713c78201cdb8a8cfdb6b.gif "Bang Head")

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 🙂

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