Search code examples
mysqlsqlselectgroup-bygroup-concat

group concat between two tables


Table1: PROJECT_BASIC_INFORMATION :

PROJECT_BASIC_INFORMATION_ID | TITLE
PBID_1                         TITLE_1
PBID_2                         TITLE_2
PBID_3                         TITLE_3

Table2: MAP_ASSOCIATED_PROJECTS

MAP_ID | PROJECT_BASIC_INFORMATION_ID | ASSOCIATED_PROJECT_BASIC_INFORMATION_ID 
  1            PBID_1                          PBID_2 
  2            PBID_1                          PBID_3

I would like to have a query like for single project_basic_information_id in table 1,give me all of its associated project_basic_information_id(s) and corresponding title(s) in a comma separated value.

Ex:for PBID_1 in table1 I should get output like

Project_basic_information_ids  | Project_titles 
pbid2,pbid3                      title2,title3

I tried this query

SELECT  GROUP_CONCAT(DISTINCT a.`ASSOCIATED_PROJECT_BASIC_INFORMATION_ID`) AS PROJECT_BASIC_INFORMATION_IDS,GROUP_CONCAT(DISTINCT b.`TITLE`) AS TITLE
FROM MAP_ASSOCIATED_PROJECTS a  LEFT OUTER JOIN
`PROJECT_BASIC_INFORMATION` b ON  b.PROJECT_BASIC_INFORMATION_ID =a.PROJECT_BASIC_INFORMATION_ID 

Solution

  • Try this:

    SELECT GROUP_CONCAT(DISTINCT a.ASSOCIATED_PROJECT_BASIC_INFORMATION_ID) AS Project_basic_information_ids  ,
           GROUP_CONCAT(DISTINCT b.TITLE) AS Project_titles 
    FROM MAP_ASSOCIATED_PROJECTS a  
    LEFT OUTER JOIN PROJECT_BASIC_INFORMATION b ON a.ASSOCIATED_PROJECT_BASIC_INFORMATION_ID = b.PROJECT_BASIC_INFORMATION_ID 
    WHERE a.PROJECT_BASIC_INFORMATION_ID = 'PBID_1'
    GROUP BY a.PROJECT_BASIC_INFORMATION_ID