LEFT加入MS Access中的其他条件

Sup*_*bbs 8 sql ms-access left-join

我有以下T-SQL查询(一个简单的测试用例)在MS SQL中正常运行但无法在MS Access(JET-SQL)中获得等效查询.问题是LEFT JOIN中的附加标准.我怎样才能在MS Access中执行此操作?

T-SQL:

SELECT * FROM A 
LEFT OUTER JOIN B ON A.ID = B.A_ID 
                 AND B.F_ID = 3
Run Code Online (Sandbox Code Playgroud)

JET-SQL(我到目前为止但崩溃了Access!):

SELECT * FROM dbo_A 
LEFT JOIN dbo_B ON (dbo_A.ID = dbo_B.A_ID AND dbo_B.F_ID = 3)
Run Code Online (Sandbox Code Playgroud)

Dav*_*ton 12

您需要使用子选择来应用条件:

  SELECT *
  FROM dbo_A LEFT JOIN 
    [SELECT dbo_B.* FROM dbo_B WHERE dbo_B.F_ID = 3]. AS dbo_B 
      ON dbo_A.ID = dbo_B.A_ID;
Run Code Online (Sandbox Code Playgroud)

如果您在启用"SQL 92"兼容模式的情况下运行Access,则可以执行更标准的操作:

  SELECT *
  FROM dbo_A LEFT JOIN 
    (SELECT dbo_B.* FROM dbo_B WHERE dbo_B.F_ID = 3) AS dbo_B 
      ON dbo_A.ID = dbo_B.A_ID;
Run Code Online (Sandbox Code Playgroud)

您是否需要在Access中进行编辑?如果没有,只需使用本机T-SQL的passthrough查询.如果是这样,我可能会为此创建一个服务器端视图,我特别想在服务器端移动它,如果文字值是你要参数化的东西(即,F_ID = 3真的是F_ID = N其中N是在运行时选择的值).

顺便说一句,我在Access中工作时,每天都会编写这些子选择派生表SQL语句.这不是什么大不了的事.