【问题标题】:Debugging Ambiguous outer join statement调试不明确的外部连接语句
【发布时间】:2013-05-14 12:59:39
【问题描述】:

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

【问题讨论】:

    标签: sql-server ms-access


    【解决方案1】:

    我不确定 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;
    

    【讨论】:

      【解决方案2】:

      如何在 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
      

      ...或类似的东西。

      【讨论】:

      • 如何将查询保存为 Purchase_PurchaseDetails
      • @user2284926 在 Access 中,选择 Create > Query Design,然后在 GUI 中构建查询或将 SQL 语句写入/粘贴到 SQL 视图中。然后单击“保存”,或者直接关闭查询,Access 会询问您是否要保存它。
      猜你喜欢
      • 2014-02-25
      • 1970-01-01
      • 2012-07-10
      • 1970-01-01
      • 2015-02-20
      • 1970-01-01
      • 2022-01-23
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多