Access で複数のテーブルを結合する SQL があります。実行しようとすると、「JOIN」でエラーが発生します(具体的には「JOIN式はサポートされていません」)。問題を1つの結合に絞り込んだと思いますが、なぜそれが機能しないのかは私には意味がありません. したがって、元の完全な SQL FROM 句は次のようになります。
FROM (
(
Customers RIGHT JOIN
(
Sales LEFT JOIN SaleType ON Sales.SalesForID = SaleType.SalesForID
)
ON Customers.CustomerID = Sales.CustomerID
) LEFT JOIN
(
StudentContracts LEFT JOIN
(
StudentsClasses INNER JOIN Classes ON StudentsClasses.ClassID = Classes.ClassID
)
ON StudentContracts.CustomerID = StudentsClasses.CustomerID
)
ON Customers.CustomerID = StudentContracts.CustomerID
)
クエリが失敗すると思われる部分は、この「LEFT」結合にあります。
(
StudentContracts LEFT JOIN
(
StudentsClasses INNER JOIN Classes ON StudentsClasses.ClassID = Classes.ClassID
)
ON StudentContracts.CustomerID = StudentsClasses.CustomerID
)
「LEFT」を「INNER」に切り替えてみましたが、うまくいきます。私はそれを「右」に切り替えましたが、動作します。「LEFT」結合では機能せず、他の結合では機能するのはなぜですか? 私が必要としているのは、StudentContracts にリンクされた結合された「Classes」テーブルのレコードだけでなく、Classes テーブルにレコードのない StudentContracts を示す結果です。この投稿の回答によると: SQL Server での左結合と右結合の違い私は左結合が必要であり、これはうまくいくはずです。
ここで何が欠けていますか?