Несколько групповых конкат в одном запросе


У меня есть одна главная таблица (m) в MySQL и две вспомогательные (a,b).

У меня есть такой запрос:

SELECT *,group_concat(a.name_auxone) as namesone
FROM main m 
    LEFT JOIN auxiliaryone a ON m.id_main=a.id_main_auxone 
    WHERE m.id_main=1

... и после создания с помощью php $ row [], он отображает:

$row['namesone']-->name1,name2,name3

Это нормально (у меня есть 3 регистра в auxiliarione, связанные с id_main=1). Но если я хочу присоединиться к другой вспомогательной таблице (с 2 регистрами, связанными с id_main=1) с этим запросом...

SELECT *,group_concat(a.name_auxone) as namesone,
         group_concat(b.name_auxtwo) as namestwo 
FROM main m 
    LEFT JOIN auxiliaryone a ON m.id_main=a.id_main_auxone 
    LEFT JOIN auxiliarytwo b ON m.id_main=b.id_main_auxtwo

... У меня есть такие значения:

$row['namesone']-->nameone1,nameone1,   nameone2,nameone2,   nameone3,nameone3
$row['namestwo']-->nametwo1,nametwo2,   nametwo1,nametwo2,   nametwo1,nametwo2

Итак.. в namesone (3 связанных регистра) каждый регистр является повторяется 2 раза. в namestwo (2 связанных регистра), 2 регистра повторяются 3 раза. Я поставил пробелы между группами регистров, чтобы ясно видеть, как они повторяются (11,22,33 и 12,12,12).

Правильное отображение должно быть:

$row['namesone']-->nameone1,nameone2,nameone3
$row['namestwo']-->nametwo1,nametwo2

(123 и 12) что я делаю не так? Спасибо.

1 2

1 ответ:

Вы можете сделать это, используя DISTINCT. Попробуйте это:

SELECT *,group_concat(DISTINCT a.name_auxone) as namesone,
     group_concat(DISTINCT b.name_auxtwo) as namestwo 
FROM main m 
LEFT JOIN auxiliaryone a ON m.id_main=a.id_main_auxone 
LEFT JOIN auxiliarytwo b ON m.id_main=b.id_main_auxtwo