首页 > 解决方案 > 不支持 LEFT JOIN 表达式

问题描述

我需要使用左外连接进行查询,如下所示,但是 Access 显示警告对话框“不支持 JOIN 表达式”。我知道 Access 不支持嵌套在 LEFT JOIN 内的 INNER JOIN 但因为我是初学者在 SQL 中,我看不到任何其他方法可以得到相同的结果。

查询的目标是获取选择中的所有内容,即使 InvoiceItems.Amount 为空。

SELECT MainOrder.OrderNumber, OrderComponent.ArticleNumber, SupplierOrderMain.*, InvoiceItems.Amount
FROM InvoiceItems LEFT JOIN
     ((MainOrder INNER JOIN
       OrderComponent 
       ON MainOrder.OrderNumber = OrderComponent.OrderNumber
      ) INNER JOIN
      SupplierOrderMain
      ON OrderComponent.ID = SupplierOrderMain.OrderComponentID
     )
     ON InvoiceItems.OrderComponent = OrderComponent.ID;

标签: sqlms-access

解决方案


我不确定为什么在这种情况下你会想要外部连接(你没有解释为什么)。但只需从要保留所有内容并从那里开始工作的表开始:

SELECT MainOrder.OrderNumber, OrderComponent.ArticleNumber, SupplierOrderMain.*, InvoiceItems.Amount
FROM ((InvoiceItems LEFT JOIN
       OrderComponent
       ON InvoiceItems.OrderComponent = OrderComponent.ID
      ) LEFT JOIN
      MainOrder      
      ON MainOrder.OrderNumber = OrderComponent.OrderNumber
     ) LEFT JOIN
     SupplierOrderMain
     ON OrderComponent.ID = SupplierOrderMain.OrderComponentID

推荐阅读