不支持MS Access左连接-组合框为变量



我有3个表用于跟踪飞机维修偏差。

1 -偏差-描述偏差的位置。

2 -飞机-机队中飞机的列表

3 -飞机偏差-具有唯一ID、DeviationID和AircraftID的列

我正试图打开一个报告,显示针对特定aircraftID的所有偏差,使用表单上的组合框按ID选择飞机。我正在使用组合框的onUpdate事件修改查询定义与以下SQL:

strSQL = "SELECT Deviation, Rev, Title, Issued, ExpiryDate, ExpiryHours, " _
& "ExpOther, Active FROM Deviations t1 LEFT JOIN " _
& "AircraftDeviations t2 ON t1.ID = t2.DeviationID " _
& "AND t2.AircraftID = " & Me!cmbAircraft

我收到一个LEFT JOIN不支持的错误。我试过添加括号,没有错误,但我在表中看到了所有东西,而不仅仅是那些特定的飞机编号。我已经通过在我想要的aircraftID(例如:428)中硬编码测试了该语句,但我仍然得到了"AND t2"不支持的连接错误。AircraftID = 428"高亮显示。

我在这里使用错误的连接吗?写这个查询的正确方法是什么?

问题是MS Access不允许在ON子句中使用常量。唉。这只是Access版本SQL中许多令人尴尬的限制之一。

你可以对子查询做任何你想做的事:

SELECT Deviation, Rev, Title, Issued, ExpiryDate, ExpiryHours, 
       ExpOther, Active
FROM Deviations as d LEFT JOIN 
     (SELECT ad.*
      FROM AircraftDeviations as ad
      WHERE ad.AircraftID = Me!cmbAircraft
     ) as ad
     ON d.ID = ad.DeviationID ;
编辑:

如果你想要一个内部连接,那么代码甚至更简单:

SELECT Deviation, Rev, Title, Issued, ExpiryDate, ExpiryHours, 
       ExpOther, Active
FROM Deviations as d INNER JOIN 
     AircraftDeviations as ad
     ON d.ID = ad.DeviationID
WHERE ad.AircraftID = Me!cmbAircraft;

子查询只需要LEFT JOIN

最新更新