[英]Condition within GROUP_CONCAT()
Guys I have the following tables in my DB 伙计我的数据库中有以下表格
locations 地点
projects 项目
milestones 里程碑
statuses 状态
project_milestones project_milestones
Here, For listing all the Milestones (which has status 9) of all projects, I'm using following query 在这里,为了列出所有项目的所有里程碑(其状态为9),我正在使用以下查询
SELECT projects.projectname, locations.name, DATE_FORMAT(projects.created_at, '%d-%m-%y') as projectdate,
GROUP_CONCAT(milestones.name ORDER BY project_milestones.milestone_id ASC separator '<br/>') AS milestones
FROM projects INNER JOIN locations ON projects.location_id=locations.id
INNER JOIN project_milestones ON project_milestones.project_id=projects.id AND project_milestones.status_id=9
INNER JOIN milestones ON project_milestones.milestone_id=milestones.id
INNER JOIN statuses ON project_milestones.status_id=statuses.id
AND project_milestones.milestone_id=milestones.id GROUP BY projects.projectname
Result looks like this 结果如下所示
Location Date Created Project Name Milestones (Status 9) Bangalore 25-10-11 ABCD CSO Contacts, Developer Bangalore 11-11-11 Friday Establish, Publish list Bangalore 08-11-11 XX CSO Contacts, Assemble,Layouts
It's working great, But what I need is Another GROUP_CONCAT column say Milestones (Status 10) to display all the Milestones (which has status 10) of all projects. 它工作得很好,但我需要的是另一个GROUP_CONCAT专栏列出里程碑(状态10)来显示所有项目的所有里程碑(状态为10)。
Output like all Projects with [Status-9 Milestones] and [Status-10 milestones] listed. 输出与列出[Status-9里程碑]和[状态-10里程碑]的所有项目一样。 How can I do this?
我怎样才能做到这一点?
SELECT *,
(
SELECT GROUP_CONCAT(m.name ORDER BY m.id)
FROM project_milestones pm
JOIN milestones m
ON m.id = pm.milestone_id
WHERE pm.project_id = p.id
AND pm.status_id = 9
) milestone_9,
(
SELECT GROUP_CONCAT(m.name ORDER BY m.id)
FROM project_milestones pm
JOIN milestones m
ON m.id = pm.milestone_id
WHERE pm.project_id = p.id
AND pm.status_id = 10
) milestone_10
FROM projects p
JOIN locations l
ON l.id = p.location_id
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.