sql语句的结果问题
问题描述:
我有一个sql语句重复记录几个时间我不知道为什么!sql语句的结果问题
这是我的发言:
select floor((a.created-c.created)*24)
|| ' HOURS ' ||
mod(floor((a.created-c.created)*24*60),60)
|| ' MINUTES ' ,a.pkey as AssignedGroupResponseTime,a.pkey,d.newString as AssignedGroup
from
(
select g.created,g.issueid as groupid1, ji.pkey ,ci.newString
from changegroup g
join jiraissue ji on (ji.id = g.issueid)
join changeitem ci on (ci.groupid = g.id)
where (g.created, ji.pkey) in (
select min(g.created) ,ji.pkey
from changegroup g
join changeitem ci on (ci.groupid = g.id)
join jiraissue ji on (ji.id = g.issueid)
join project p on (p.id = ji.project)
join priority pr on (pr.id = ji.priority)
where ci.field = 'Group'
and ci.oldString like 'Triage'
and p.pname = 'Change Management'
and pr.pname='P3'
and ji.created between '01/03/2011' and '16/08/2011'
group by ji.pkey
)) a
left join (
select ji.created, ji.id as groupid2 ,ji.pkey ,ci.newString
from jiraissue ji
join changegroup g on (g.issueid = ji.id)
join changeitem ci on (ci.groupid = g.id)
join project p on (p.id = ji.project)
where p.pname = 'Change Management'
and ci.field = 'Group'
and ci.oldString like 'Triage'
and ji.created between '01/03/2011' and '16/08/2011'
) b ON (a.pkey = b.pkey)
left join (
select g.created, g.issueid as groupid1 ,ji.pkey ,ci.newString
from changegroup g
join jiraissue ji on (ji.id = g.issueid)
join changeitem ci on (ci.groupid = g.id)
where (g.created, ji.pkey) in (
select min(g.created) ,ji.pkey
from changegroup g
join changeitem ci on (ci.groupid = g.id)
join jiraissue ji on (ji.id = g.issueid)
join project p on (p.id = ji.project)
join priority pr on (pr.id = ji.priority)
where ci.field='assignee'
and ci.newString is not NULL
and p.pname = 'Change Management'
and pr.pname='P3'
and ji.created between '01/03/2011' and '16/08/2011'
group by ji.pkey)) c
ON (c.pkey = a.pkey)
left join (
select g.created, g.issueid as groupid1 ,ji.pkey ,ci.newString
from changegroup g
join jiraissue ji on (ji.id = g.issueid)
join changeitem ci on (ci.groupid = g.id)
where (g.created, ji.pkey) in (
select min(g.created) ,ji.pkey
from changegroup g
join changeitem ci on (ci.groupid = g.id)
join jiraissue ji on (ji.id = g.issueid)
join project p on (p.id = ji.project)
join priority pr on (pr.id = ji.priority)
where ci.field='assigned group'
and ci.newString is not NULL
and p.pname = 'Change Management'
and pr.pname='P3'
and ji.created between '01/03/2011' and '16/08/2011'
group by ji.pkey)) d
ON (d.pkey = c.pkey);
答
这是因为你对视图B或C重复键。 你可以单独运行这个视图,看看有什么不对(重复键值)。 在该视图中,您已加入。几乎一个加入是以弱条件进行的。这意味着你有一个条件重复匹配。
+1
+1重复的行几乎总是由于拙劣的连接导致:缺少一个导致笛卡尔积的标准。 – APC
我怀疑这个问题正在关闭 –
是的,记录不佳的问题。你应该挖掘自己,然后创建一个问题。 –