0

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

2 回答 2

0

I'm not sure about Access, but in SQL the ON command should follow the JOIN, like so:

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;
于 2013-05-14T13:05:26.087 回答
0

如何在 MS SQL 视图中创建单独的查询并将该查询包含到我的主 SQL 语句中?

您有一个涉及多个 LEFT JOIN 的查询,并且数据库引擎无法准确确定您希望表如何连接。具体来说,它已经确定它将(或可能)返回不同的结果,具体取决于它应用 JOIN 的顺序。

所以,它要求你

  • 仅使用表的子集创建查询,

  • 将该查询保存在 Access 中,然后

  • 创建另一个查询,该查询使用其他表和保存的查询来生成最终结果。

例如,您可以创建以下查询并将其保存在 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

...或类似的规定。

于 2013-05-14T14:13:28.783 回答