/ / Impossibile eseguire l'istruzione SQL poiché contiene join esterni ambigui. Dove? - sql, ms-access

L'istruzione SQL non può essere eseguita perché contiene join esterni ambigui. Dove? - sql, ms-access

Ricevo un messaggio di errore quando eseguo questo. Sai perché? L'ho costruito usando la vista di progettazione di Access.

SELECT  [Sales structure].Cluster ,
[Sales structure].Country ,
[Transaction details].[Sales company code] ,
[Sales structure].[Sales company name] ,
YEAR([Transaction details].[YYYY-MM-DD]) AS [Year] ,
MONTH([Transaction details].[YYYY-MM-DD]) AS [Month] ,
SUM([Transaction details].[Sales volume LOC]) AS Total ,
[Transaction details].[Currency code] ,
Currencies.[CUR/EUR] AS [Currency rate]
FROM    Items ,
Currencies
RIGHT JOIN ( [Sales structure]
RIGHT JOIN [Transaction details] ON [Sales structure].[Sales company code] = [Transaction details].[Sales company code]
) ON Currencies.[Currency code] = [Transaction details].[Currency code]
GROUP BY [Sales structure].Cluster ,
[Sales structure].Country ,
[Transaction details].[Sales company code] ,
[Sales structure].[Sales company name] ,
YEAR([Transaction details].[YYYY-MM-DD]) ,
MONTH([Transaction details].[YYYY-MM-DD]) ,
[Transaction details].[Currency code] ,
Currencies.[CUR/EUR]
HAVING  ( ([Transaction details].[Currency code] = [Currencies].[Currency code]) )
ORDER BY YEAR([Transaction details].[YYYY-MM-DD]) ,
MONTH([Transaction details].[YYYY-MM-DD]) ;

risposte:

3 per risposta № 1

Non c'è JOIN condizione tra il Items e Currencies tabelle. Vengono semplicemente introdotti con una virgola.

MS Access è molto particolare riguardo ai join. È inoltre possibile inserire parentesi attorno a ciascun join poiché può avere connotazioni sulle parentesi mancanti, anche se la query è sintatticamente corretta senza di esse.

Ti incoraggio vivamente a dimenticare che puoi unirti ai tavoli usando una virgola , e inserendo le condizioni di partecipazione in WHERE clausola. Questo è vecchio stile e dovrebbe essere abbandonato! Iniziare a utilizzare i join ANSI SQL introdotti (dopo la prima tabella) con a JOIN e unita a un ON clausola. Ci sono molte ragioni convincenti per questo - basta fare alcune ricerche online se vuoi capire di più.