【发布时间】:2012-11-30 10:34:19
【问题描述】:
我尝试用多个 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 年之前更新的最新问题 (jiraissue.UPDATED) 的项目名称 (project.pname)。
示例:
我得到了一个项目 ABC,它的最新问题是 2012 年 11 月 21 日更新的。另一个项目 XYZ 的最新一期最后更新于 08.12.2011。
所以我的 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 个项目,而且选择所有项目?
【问题讨论】:
-
两个表中的 pkey 和 ID 相同?
-
pkey 是项目的缩写。在表项目中,例如项目 AKS-Infra 是 pkey AKSI。该项目中问题的 pkey 是 pkey + ID,因此 id 7 的问题具有 pkey ASKI-7
标签: mysql sql multiple-select