左加入MS Access中的其他条件 [英] LEFT JOINing on additional criteria in MS Access

查看:72
本文介绍了左加入MS Access中的其他条件的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有以下在MS SQL中运行良好的T-SQL查询(一个简单的测试用例),但是在MS Access(JET-SQL)中无法获得等效的查询.问题是左联接中的附加条件. 如何在MS Access中做到这一点?

I have the following T-SQL query (a simple test case) running fine in MS SQL but cannot get the equivalent query in MS Access (JET-SQL). The problem is the additional criteria in the LEFT JOIN. How can I do this in MS Access?

T-SQL:

SELECT * FROM A 
LEFT OUTER JOIN B ON A.ID = B.A_ID 
                 AND B.F_ID = 3

JET-SQL(到目前为止,我所拥有的只是使Access崩溃了!):

JET-SQL (what I have so far but crashes Access!):

SELECT * FROM dbo_A 
LEFT JOIN dbo_B ON (dbo_A.ID = dbo_B.A_ID AND dbo_B.F_ID = 3)

推荐答案

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

You need to use a subselect to apply the condition:

  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;

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

If you're running Access with "SQL 92" compatibility mode turned on, you can do the more standard:

  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;

您需要在Access中对其进行编辑吗?如果没有,只需对本机T-SQL使用传递查询.如果是这样,我可能会为此创建一个服务器端视图,如果文字值是您要参数化的值(即F_ID = 3实际上是F_ID = N,其中N是在运行时选择的值.

Do you need this to be editable in Access? If not, just use a passthrough query with the native T-SQL. If so, I would likely create a server-side view for this, and I'd especially want to move it server-side if the literal value is something you would parameterize (i.e., the F_ID=3 is really F_ID=N where N is a value chosen at runtime).

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

BTW, I write these subselect derived table SQL statements every single day while working in Access. It's not that big a deal.

这篇关于左加入MS Access中的其他条件的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆