我试图在一个表上使用左连接从4个表中获取数据。但是,我面临的问题是1)右表中的值都是空的,2)查询不是从左表之一过滤结果(显示右表中的所有行)。
有人知道我在这里做错了吗?
我尝试了下面粘贴的2个不同版本的查询:
版本1:
select prt.rolloutID, prt.taskNum TASK, pra.actionType ACTION,
prs.serverName as SERVER_NAME, prs.instanceName as INSTANCE_NAME,
pn.status as STATUS, pn.description as DESCRIPTION
from (pdt_rolloutTasks prt, pdt_rolloutActions pra, pdt_rolloutServers prs)
left join pdt_notification pn on prt.taskNum = pn.taskID
and prt.rolloutId = 74
and prt.taskNum = pra.taskNum
and prt.taskNum = prs.taskNum
and pn.notificationType = 'action';
此版本返回右表(pdt_notification)中具有空值
的所有值第2版:
select prt.rolloutID, prt.taskNum TASK, pra.actionType ACTION,
prs.serverName as SERVER_NAME, prs.instanceName as INSTANCE_NAME,
pn.status as STATUS, pn.description as DESCRIPTION
from (pdt_rolloutTasks prt, pdt_rolloutActions pra, pdt_rolloutServers prs)
left join pdt_notification pn on prt.taskNum = pn.taskID
where prt.rolloutId = 74
and prt.taskNum = pra.taskNum
and prt.taskNum = prs.taskNum
and pn.notificationType = 'action';
这个版本违背了左连接的整个目的,只返回右表中匹配的行(基本上是一个内在的连接)。
提前感谢您的帮助。