我是MS Office Access的新手,我在为此查询构建SQL视图时遇到一些问题。我一直收到错误:“SQL语句无法执行,因为它包含不明确的外连接。要强制执行其中一个连接,请创建一个单独的查询,执行第一次连接并在SQL语句中包含该查询”。
1)如何在MS SQL视图中创建单独的查询并将该查询包含在我的主SQL语句中?
2)我无法理解错误发生的原因??
SELECT [Table : PurchaseDetails].PurchaseID
FROM [Table: Supplier]
LEFT JOIN ([Table : Purchase]
LEFT JOIN ([Table : Product]
LEFT JOIN [Table : PurchaseDetails]
ON [Table : Product].ProductID = [Table : PurchaseDetails].ProductID)
ON [Table : Purchase].PurchaseID = [Table : PurchaseDetails].PurchaseID)
ON [Table: Supplier].SupplierID = [Table : Purchase].SupplierID;
答案 0 :(得分:0)
我不确定Access,但在SQL中,ON命令应该遵循JOIN,如下所示:
SELECT [Table : PurchaseDetails].PurchaseID
FROM [Table: Supplier]
LEFT JOIN [Table : Purchase]
ON [Table : Purchase].PurchaseID = [Table : PurchaseDetails].PurchaseID
LEFT JOIN [Table : Product]
ON [Table : Product].ProductID = [Table : PurchaseDetails].ProductID
LEFT JOIN [Table : PurchaseDetails]
ON [Table: Supplier].SupplierID = [Table : Purchase].SupplierID;
答案 1 :(得分:0)
如何在MS SQL视图中创建单独的查询并将该查询包含在我的主SQL语句中?
您有一个涉及多个LEFT JOIN的查询,并且数据库引擎无法准确确定您希望表格如何加入。具体来说,它确定它将(或可以)返回不同的结果,具体取决于它应用JOIN的顺序。
所以,它要求你
仅使用表的子集
在Access中保存该查询,然后
创建另一个查询,使用其他表和保存的查询来生成最终结果。
例如,您可以创建以下查询并将其作为Purchase_PurchaseDetails
SELECT Purchase.PurchaseID, Purchase.SupplierID
FROM Purchase LEFT JOIN PurchaseDetails
ON Purchase.PurchaseID=PurchaseDetails.PurchaseID
然后您可以在另一个查询中使用该查询,例如,
SELECT Supplier.SupplierID
FROM Suppliers LEFT JOIN Purchase_PurchaseDetails
ON Supplier.SupplierID=Purchase_PurchaseDetails.SupplierID
......或类似的东西。