簡體   English   中英

GROUP_CONCAT()內的條件

[英]Condition within GROUP_CONCAT()

伙計我的數據庫中有以下表格

地點

  • 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

結果如下所示

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

它工作得很好,但我需要的是另一個GROUP_CONCAT專欄列出里程碑(狀態10)來顯示所有項目的所有里程碑(狀態為10)。

輸出與列出[Status-9里程碑]和[狀態-10里程碑]的所有項目一樣。 我怎樣才能做到這一點?

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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM