【问题标题】:Condition within GROUP_CONCAT()GROUP_CONCAT() 中的条件
【发布时间】:2012-01-13 00:15:20
【问题描述】:

伙计们,我的数据库中有以下表格

位置

  • id(主键)
  • 姓名

项目

  • id(主键)
  • location_id(外键=>位置)
  • 项目名称

里程碑

  • id(主键)
  • 姓名

状态

  • id(主键)
  • 状态

project_milestones

  • id(主键)
  • project_id(外键 => 项目)
  • milestone_id(外键 => 里程碑)
  • status_id(外键=>状态)

在这里,为了列出所有项目的所有里程碑(状态为 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

结果如下所示

位置 创建日期 项目名称 里程碑(状态 9) 班加罗尔 25-10-11 ABCD CSO 联系人,开发人员 班加罗尔 11-11-11 星期五 建立,发布列表 班加罗尔 2011 年 8 月 11 日 XX CSO 联系人、组装、布局

效果很好,但我需要另一个 GROUP_CONCAT 列说 里程碑(状态 10) 来显示所有项目的所有里程碑(状态 10)。

与列出 [Status-9 里程碑] 和 [Status-10 里程碑] 的所有项目类似的输出。我该怎么做?

【问题讨论】:

    标签: mysql conditional-statements group-concat


    【解决方案1】:
    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
    

    【讨论】:

      猜你喜欢
      • 2012-04-08
      • 1970-01-01
      • 2021-10-23
      • 2015-07-08
      • 2014-07-30
      • 2014-11-30
      • 2015-04-28
      • 2020-07-30
      • 1970-01-01
      相关资源
      最近更新 更多