проблема с GROUP_CONCAT в запросе JOIN mysql - PullRequest
0 голосов
/ 04 июля 2018

У меня есть запрос на соединение, в котором я оставил соединение, 2 таблицы, скажем tab_sector и tab_sector_subdivisions. У меня есть записи в первой таблице, которые могут иметь или не иметь соответствующие записи во 2-й таблице. Я присоединяюсь к этим таблицам таким образом, чтобы он возвращал все строки из первой таблицы и соответствующие строки из второй таблицы. Также, если строка в первой таблице имеет несколько записей во второй таблице, она должна возвращаться как GROUP_CONCAT(field_name). Но мой запрос не возвращает так, как мне нужно.

Вот запрос без 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'

результат: enter image description here

вы можете видеть 2 строки для идентификатора 20. Мне нужна только одна строка, но subdiv_id как (19,20). Затем я использовал GROUP_CONCAT в запросе как:

    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'

Тогда результат будет:

enter image description here

Мои две другие записи отсутствуют в этом. Я хочу, чтобы эти строки тоже были в моем результате.

Может кто-нибудь помочь мне решить эту проблему? Заранее спасибо.

Ответы [ 2 ]

0 голосов
/ 04 июля 2018

группа пропустила, поэтому возвращает одну запись,

  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;
0 голосов
/ 04 июля 2018

Вам нужна группировка по неагрегированным столбцам

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
...