按多个标准访问LEFT JOIN

时间:2017-04-21 13:03:36

标签: sql ms-access left-join

我想做这样的事情:

SELECT t1.*, t2.* FROM t1 LEFT JOIN t2 ON t1.id=t2.id AND t1.field1=false

因此,我不希望t2表中的数据显示t1表中t1.field1=false的记录。 这在ORACLE中是可能的,但在MS ACCESS中这是可能的吗?

修改:我收到了Syntax error in JOIN operationJOIN expression not supported以及Invalid argument to function

Edit2:为了防止进一步的误解和“放入WHERE条款”的评论。 <code>t1</code> table <code>t2</code> table

SELECT t1.*, t2.* FROM t1 LEFT JOIN t2 ON t1.id=t2.id simple <code>LEFT JOIN</code>

如果你在ORACLE中写下我的第一个SELECT,你会看到这个(我必须在MS中这样做)。我想查看来自t1表的所有记录,但我不想加入每条记录,而只是t1.f1=false。您可以看到id=2id=5的位置。 how it works in ORACLE but not in MS

3 个答案:

答案 0 :(得分:1)

如果要将过滤器应用于数据集,请尝试在查询中使用WHERE代替AND。

SELECT t1.*, t2.* FROM t1 LEFT JOIN t2 ON t1.id=t2.id WHERE t1.field1=False

答案 1 :(得分:1)

这个更简单的解决方案对我有用:

SELECT t2.*, falset1.c1
FROM t2 LEFT JOIN (SELECT t1.*
                    WHERE t1.f1=false) AS falset1
ON t2.id=falset1.id

基本上,您需要使用where子句对需要常量的数据进行子集化,然后在left join中使用该子集

答案 2 :(得分:0)

如果您首先拥有多个SELECT,我设法使用多个SELECT获得了所需的结果,这很恶心。

SELECT t1.*, a.c1 FROM t1 LEFT JOIN (SELECT t2.* FROM t1 LEFT JOIN t2 ON t1.id = t2.id WHERE t1.f1=false) AS a ON t1.id=a.id