右手和左手在 SQL 中连接在一起
Right and Left Join Together in SQL
我正在尝试同时使用 RIGHT 和 LEFT Join。我只剩下加入一个 table 时就可以正常工作。但我现在正尝试在我的左连接中包含另一个 table 。它给了我一个错误,说我缺少一个操作员。我哪里漏了括号?
FROM qSplit RIGHT JOIN (t_i360_agent AS i LEFT JOIN cmsAgent_Split AS c
ON ((i.LocalDay = c.LocalDay) AND (i.ACDID = c.LOGID))
LEFT JOIN qry_AllNewtables as qry ON (qry.custConvDate = c.LocalDay)
AND (qry.CustAgentLoginName = i.Loginname) ) ON qSplit.SPLIT = c.SPLIT
不要同时使用 LEFT JOIN
和 RIGHT JOIN
。我想在某个地方可能会有一个有意义的查询。实际上,我不认为我曾经在同一个查询中同时使用过它们,可能是因为我使用 LEFT JOIN
.
编写查询
如果agent
table里的都想要,那就先来吧!并使用 left join
;
FROM t_i360_agent i LEFT JOIN
cmsAgent_Split c
ON i.LocalDay = c.LocalDay AND i.ACDID = c.LOGID LEFT JOIN
qry_AllNewtables qry
ON qry.custConvDate = c.LocalDay AND
qry.CustAgentLoginName = i.Loginname LEFT JOIN
qSplit
ON qSplit.SPLIT = c.SPLIT
这样更容易理解查询的意图。您从您认为非常重要以至于想要保留所有数据的数据开始,即使 JOIN
没有匹配的行。
除了 Gordon 的建议之外,问题是您错过了 RIGHT JOIN
的连接条件,一旦我重新格式化查询就很容易看出缺少什么。
FROM qSplit
RIGHT JOIN t_i360_agent AS i
-- Need join condition
LEFT JOIN cmsAgent_Split AS c
ON (i.LocalDay = c.LocalDay)
AND (i.ACDID = c.LOGID))
LEFT JOIN qry_AllNewtables as qry
ON (qry.custConvDate = c.LocalDay)
AND (qry.CustAgentLoginName = i.Loginname)
我正在尝试同时使用 RIGHT 和 LEFT Join。我只剩下加入一个 table 时就可以正常工作。但我现在正尝试在我的左连接中包含另一个 table 。它给了我一个错误,说我缺少一个操作员。我哪里漏了括号?
FROM qSplit RIGHT JOIN (t_i360_agent AS i LEFT JOIN cmsAgent_Split AS c
ON ((i.LocalDay = c.LocalDay) AND (i.ACDID = c.LOGID))
LEFT JOIN qry_AllNewtables as qry ON (qry.custConvDate = c.LocalDay)
AND (qry.CustAgentLoginName = i.Loginname) ) ON qSplit.SPLIT = c.SPLIT
不要同时使用 LEFT JOIN
和 RIGHT JOIN
。我想在某个地方可能会有一个有意义的查询。实际上,我不认为我曾经在同一个查询中同时使用过它们,可能是因为我使用 LEFT JOIN
.
如果agent
table里的都想要,那就先来吧!并使用 left join
;
FROM t_i360_agent i LEFT JOIN
cmsAgent_Split c
ON i.LocalDay = c.LocalDay AND i.ACDID = c.LOGID LEFT JOIN
qry_AllNewtables qry
ON qry.custConvDate = c.LocalDay AND
qry.CustAgentLoginName = i.Loginname LEFT JOIN
qSplit
ON qSplit.SPLIT = c.SPLIT
这样更容易理解查询的意图。您从您认为非常重要以至于想要保留所有数据的数据开始,即使 JOIN
没有匹配的行。
除了 Gordon 的建议之外,问题是您错过了 RIGHT JOIN
的连接条件,一旦我重新格式化查询就很容易看出缺少什么。
FROM qSplit
RIGHT JOIN t_i360_agent AS i
-- Need join condition
LEFT JOIN cmsAgent_Split AS c
ON (i.LocalDay = c.LocalDay)
AND (i.ACDID = c.LOGID))
LEFT JOIN qry_AllNewtables as qry
ON (qry.custConvDate = c.LocalDay)
AND (qry.CustAgentLoginName = i.Loginname)