左连接 SQL 查询 - MS Access

Posted

技术标签:

【中文标题】左连接 SQL 查询 - MS Access【英文标题】:Left Join SQL Query - MS Access 【发布时间】:2013-07-31 08:04:23 【问题描述】:

我正在尝试使用以下查询连接两个表 Table1 和 Table2。我想要 Table1 中的所有列(和行)和 Table2 中的列“BasedOnDate”。 问题是,在左连接后,“BasedOnDate”列中的所有值都设置为 1,而不是在两个表中匹配的行上(比如 Table1 中的第 1 行和 Table2 中的第 1 行。有人可以评论问题出在哪里?

我现在使用的查询:

SELECT Table1.*, Table2.BasedOnDate
FROM Table1 LEFT JOIN Table2 ON (Table1.Name = Table2.Name) AND 
(Table1.[Date-4] = Table2.[Date-4]) AND 
(Table1.[Date-3] = Table2.[Date-3]) AND 
(Table1.[Date-2]= Table2.[Date-2]) AND 
(Table1.[Date-1] = Table2.[Date-1]) AND 
(Table1.ID = Table2.ID) AND 
(Table1.Site = Table2.Site);



Table2:

Site    ID     Date-1    Date-2     Date-3     Date-4    Name      BasedOnDate
00001   201    3/30/2011 4/6/2011   4/3/2011   4/6/2011  Name-1         1


Table1:

Site    ID     Date-1    Date-2     Date-3     Date-4    Name      
00001   201    3/30/2011 4/6/2011   4/3/2011   4/6/2011  Name-1
00001   101    5/21/2011 5/28/2011  5/21/2011  5/28/2011 Name-2

【问题讨论】:

Table2.Date-4 应该是日期减四还是您的列名称Date-4。对于后者,您需要将这些列括在括号中,例如 Table2.[Date-4] 您确定在某处没有 where 子句吗?您能否在问题中包含实际结果? 我对“左连接后'BasedOnDate'列中的所有值都被设置为1”这一说法感到困惑,因为示例数据中的值为1? In Access Name 是一个保留字,所以应该用方括号括起来。 【参考方案1】:

当我重新创建您的情况时,我可以确认使用正确的语法查询有效:检索Table1 的所有列以及加入的Table2BasedOnDate。如果不匹配,则查询会为 BasedOnDate 返回 null

SITE ID     DATE1           DATE2           DATE3           DATE4           NAME    BASEDONDATE
1    201    March, 30 2011  April, 06 2011  April, 03 2011  April, 06 2011  Name-1  1
1    101    May, 21 2011    May, 28 2011    May, 21 2011    May, 28 2011    Name-2  (null)

您可以在这里查看:http://sqlfiddle.com/#!6/a56ee/2

如果您需要进一步研究,请发表评论。希望对你有帮助!

【讨论】:

OP 已经在他们的帖子中表示他们希望查询应该可以工作。因此,您在此处发布的内容仅仅是显而易见的陈述。这将是一个很好的评论,以确认 OP 在他们的期望中是正确的。如果您至少可以使用 MS Access 演示,那么它可能 可以作为答案。这将部分解决实际问题(“问题出在哪里?”)并表明该问题至少与一般的 MS Access 无关。但是,目前您的回答实际上没有什么价值。

以上是关于左连接 SQL 查询 - MS Access的主要内容,如果未能解决你的问题,请参考以下文章

无法为 MS Access 数据库中的同一表查询编写左外连接

ms-access 中的左连接和内连接

MS Access:左连接不返回左表中的所有行

MS Access 多连接查询

MS Access 多连接查询

使用 Switch 语句和左连接 Access SQL 选择 Top 1