调试不明确的外连接语句

时间:2013-05-14 12:59:39

标签: sql-server ms-access

我是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;

2 个答案:

答案 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

保存在Access中
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

......或类似的东西。