所以情况是我有一个查询,涉及9个表,我需要写它,因此它返回所有记录,即使当workorderstates
表中的impactid
表是NULL
。mysql左加入9表
上到下面的查询,我注意到我没有得到,因为最初我只是在那里workorderstates.impactid = impactdefiniton.impactid
并在impactid
是NULL
在workorderstates
表的情况下,这种情况就不会是真实的,是“开放”的所有结果,从而消除因为实际上“公开”而应该返回的记录。
所以我设计了下面这个查询但我每次运行它的时候,它不会工作。它将返回不唯一的表别名workorder
。如果我为表使用别名,它只会在联接中的右表上移动,因为它们不是唯一的。任何人都可以提供任何帮助重组查询,以便它能工作吗?我已经尝试了很多变化和有趣的是第二个查询ALMOST作品,但它返回重复记录(在这种情况下,同一个记录四)
select workorder.workorderid, workorder.siteid,
FROM_UNIXTIME(workorder.CREATEDTIME/1000, '%m-%d-%Y %H:%i:%s') as createdate,
categoryname, IFNULL(workorderstates.impactid, "No Set") as impactid,
IFNULL(impactdefinition.name, "Not Set") as impactname, first_name,
sdorganization.name, statusname, title
from workorder, statusdefinition, sitedefinition, sdorganization,
prioritydefinition, categorydefinition, sduser, aaauser, workorderstates
left Join impactdefinition on workorderstates.impactid = impactdefinition.impactid
left join workorder on workorder.workorderid = workorderstates.workorderid
left join workorderstates on workorderstates.statusid = statusdefinition.statusid
left join workorder on workorder.siteid = sitedefinition.siteid
left join sitedefinition on sitedefinition.siteid = sdorganization.org_id
left join workorderstates on workorderstates.categoryid = categorydefinition.categoryid
left join workorder on workorder.requesterid = sduser.userid
left join sduser on sduser.userid = aaauser.user_id
where statusname='Open' and workorder.createdtime >= '1352678400000'
and sdorganization.name='MAPL'
order by workorder.workorderid
查询,几乎工程,但丑(返回重复记录) :
select workorder.workorderid, workorder.siteid,
FROM_UNIXTIME(workorder.CREATEDTIME/1000, '%m-%d-%Y %H:%i:%s') as createdate,
categoryname, IFNULL(workorderstates.impactid, "No Set") as impactid,
IFNULL(impactdefinition.name, "Not Set") as impactname, first_name,
sdorganization.name, statusname, title
from workorder, statusdefinition, sitedefinition, sdorganization,
prioritydefinition, categorydefinition, sduser, aaauser, workorderstates
left Join impactdefinition on workorderstates.impactid = impactdefinition.impactid
where workorder.workorderid = workorderstates.workorderid
and workorderstates.statusid = statusdefinition.statusid
and workorder.siteid = sitedefinition.siteid
and sitedefinition.siteid = sdorganization.org_id
and workorderstates.categoryid = categorydefinition.categoryid
and workorder.requesterid = sduser.userid and sduser.userid = aaauser.user_id
and statusname='Open' and workorder.createdtime >= '1352678400000'
and sdorganization.name='MAPL'
order by workorder.workorderid
任何想法如何让这个查询工作?多谢你们!
'选择唯一...' ? – 2013-02-17 17:21:35
@JanDvorak'DISTINCT',就是......但你是对的。 – 2013-02-17 17:24:07
将'SELECT DISTINCT'投掷到查询中以抑制重复行,就像在墙上涂抹模具污渍。 – 2013-02-17 17:37:41