我尝试使用多个SQL语句创建一个MySQL语句。
我想做什么:
我得到两张桌子project
& jiraissue
。
表:项目
Columns:
ID decimal(18,0) PK
pname varchar(255)
URL varchar(255)
LEAD varchar(255)
DESCRIPTION text
pkey varchar(255)
pcounter decimal(18,0)
ASSIGNEETYPE decimal(18,0)
表:jiraissue
Columns:
ID decimal(18,0) PK
pkey varchar(255)
PROJECT decimal(18,0)
REPORTER varchar(255)
ASSIGNEE varchar(255)
issuetype varchar(255)
SUMMARY varchar(255)
DESCRIPTION longtext
ENVIRONMENT longtext
PRIORITY varchar(255)
RESOLUTION varchar(255)
issuestatus varchar(255)
CREATED datetime
UPDATED datetime
DUEDATE datetime
VOTES decimal(18,0)
TIMEORIGINALESTIMATE decimal(18,0)
TIMEESTIMATE decimal(18,0)
TIMESPENT decimal(18,0)
WORKFLOW_ID decimal(18,0)
SECURITY decimal(18,0)
FIXFOR decimal(18,0)
COMPONENT decimal(18,0)
我的目标是获取最新问题在2012年之前更新的项目名称(project.pname)(jiraissue.UPDATED)。
示例:
我得到了一个项目 ABC ,最新的问题在21.11.2012更新。另一个项目 XYZ 的最新问题于2011年12月8日更新。
所以我的SQL脚本应该给我第二个项目的名称 XYZ 但不是第一个 ABC
这里有一个工作脚本,可以找出最新的STATIC项目ID:
SELECT
pkey
FROM
jiraissue
WHERE
UPDATED = (SELECT
max(UPDATED)
FROM
jiraissue
WHERE
PROJECT = 10472)
但是当我想要所有这些项目的项目名称时,脚本现在怎么样?我的所有尝试都花费了大量的处理时间,并给出了未确定的错误......
修改 现在我得到以下代码:
select
p.pname, j.pkey
from
project p
inner join
jiraissue j ON j.ID = (select
PROJECT
from
jiraissue
where
UPDATED = (SELECT
max(UPDATED)
from
jiraissue))
AND p.ID = j.PROJECT
结果只是第一个具有最低密钥的项目...如何浏览所有项目?
修改
select
p.pname, j.pkey, j.UPDATED
from
project p
inner join
jiraissue j
where
j.ID = (select
PROJECT
from
jiraissue
where
UPDATED = (SELECT
max(UPDATED)
from
jiraissue
where
UPDATED < '2012-01-01 00:00:00'))
and p.ID = j.PROJECT
显示我想要的所有内容。但只是第一个项目。所以我需要所有项目!我如何选择不仅仅是1个项目而是选择所有项目?
答案 0 :(得分:1)
首先开始你想要什么?在每个项目的基础上,2012年之前更新的最新问题是什么。暂时忽略项目表..
select
JI.Project,
MAX( JI.Updated ) as LastUpdated
from
JiraIssue JI
group by
JI.Project
having
LastUpdated < '2012-01-01'
现在,这将为您提供所需的所有主要信息。 HAVING子句在分组后应用,以排除2012和未来的任何项目。您不能将它作为WHERE子句应用,因为您的示例描述了您不需要任何具有当前内容的项目(例如您的ABC项目)并且只需要XYZ项目。
使用此作为获取其余数据的基础,方法是加入项目表并通过该项目/更新组合将AGAIN加入JiraIssue表
select
P.*,
JI2.*
from
( select
JI.Project,
MAX( JI.Updated ) as LastUpdated
from
JiraIssue JI
group by
JI.Project
having
LastUpdated < '2012-01-01' ) PreQuery
JOIN Project P
on PreQuery.Project = P.ID
JOIN JiraIssue JI2
on PreQuery.Project = JI2.Project
AND PreQuery.LastUpdated = JI2.Updated
答案 1 :(得分:0)
尝试使用此
SELECT pname FROM project p
INNER JOIN jiraissue j
ON p.ID = (SELECT ID
FROM jiraissue
WHERE
UPDATED = (SELECT max(UPDATED)
FROM jiraissue ))