issue with GROUP_CONCAT in JOIN query mysql

感情迁移 提交于 2020-01-30 13:10:08

问题


I have a join query where I left join 2 tables say tab_sectorand tab_sector_subdivisions. I have records in first table which may or may not have corresponding records in 2nd table. I am joining these tables in such a way that Its should return all row from first table and matching row from 2nd table. Also if a row in first table has multiple record in 2nd table, it should return as GROUP_CONCAT(field_name). But my query doesn't return the way I need.

Here is the query without GROUP_CONCAT:

SELECT tab_sector.sector_id,tab_sector.sector_title,tab_sector.sector_desc,tab_sector.sector_image,tab_sector_subdivisions.subdiv_id 
FROM tab_sector 
LEFT JOIN tab_sector_subdivisions 
ON tab_sector_subdivisions.sector_id = tab_sector.sector_id WHERE tab_sector.active = 'Y'

the result is:

you can see 2 rows for id 20. What I need is single row but subdiv_id as (19,20). Then I used GROUP_CONCAT in the query like:

    SELECT tab_sector.sector_id,tab_sector.sector_title,tab_sector.sector_desc,tab_sector.sector_image,GROUP_CONCAT(tab_sector_subdivisions.subdiv_id) 
FROM tab_sector 
LEFT JOIN tab_sector_subdivisions 
ON tab_sector_subdivisions.sector_id = tab_sector.sector_id WHERE tab_sector.active = 'Y'

Then the result will be :

My other two records are missing in this. I want that rows too in my result.

Can anyone please help me to solve this? Thanks in advance.


回答1:


You need the group by for the not aggregated columns

SELECT tab_sector.sector_id,tab_sector.sector_title,tab_sector.sector_desc
    ,tab_sector.sector_image,group_concat(tab_sector_subdivisions.subdiv_id )
LEFT JOIN tab_sector_subdivisions 
        ON tab_sector_subdivisions.sector_id = tab_sector.sector_id 
              AND tab_sector.active = 'Y'
GROUP BY  tab_sector.sector_id,tab_sector.sector_title,
     tab_sector.sector_desc, tab_sector.sector_image



回答2:


group by missed that`s why it is returning one record,

  SELECT tab_sector.sector_id,tab_sector.sector_title,tab_sector.sector_desc,tab_sector.sector_image,GROUP_CONCAT(tab_sector_subdivisions.subdiv_id) 
FROM tab_sector 
LEFT JOIN tab_sector_subdivisions 
ON tab_sector_subdivisions.sector_id = tab_sector.sector_id WHERE tab_sector.active = 'Y'
group by tab_sector.sector_id,tab_sector.sector_title,tab_sector.sector_desc,tab_sector.sector_image;


来源:https://stackoverflow.com/questions/51172310/issue-with-group-concat-in-join-query-mysql

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!