我正在尝试使用下面的查询连接两个表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发布于 2013-07-31 08:48:31
当我重新创建您的情况时,我可以确认使用正确的语法查询是有效的:检索Table1的所有列以及连接的Table2的BasedOnDate。如果没有匹配,查询返回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
如果您需要进一步的研究,请发表意见。希望能对你有所帮助!
https://stackoverflow.com/questions/17959501
复制相似问题