Как объединить столбцы с сохранением значений результатов?

#sql #mariadb

Вопрос:

Как объединить столбцы с сохранением значений результатов?

         select user_poi_no, tm.id, modelName, item, projectName
        from tb_user_poi p
                 inner join tb_member tm on p.id_pk = tm.id_pk
                 inner join tb_poi tp on p.poiNo = tp.poiNo
                 inner join tb_model t on tp.modelNo = t.modelNo
        where tm.id_pk = 1;
 

Результатом приведенного выше sql является:

 user_poi_no, id, modelname, item, projectname
1, q, drawing 3, 1, basic project
7, q, drawing 3, 2, project name test
8, q, drawing 3, 2, project name test
9, q, drawing 3, 2, project name test
 

Но то, что я хочу, — это результат ниже.

 user_poi_no, id, modelname, item, projectname
1, q, drawing 3, 1, basic project
7 8 9, q, drawing 3, 2, project name test
 

Я попытался решить проблему с помощью distinct или group by, но столкнулся с проблемой, что 4 столбца user_poi_no, id, modelname, item, projectname не поддерживаются.

Как я могу получить желаемые результаты?

с уважением

Ответ №1:

Вы можете использовать group_concat для этого

 select group_concat(user_poi_no order by user_poi_no), 
       tm.id, 
       modelName, 
       group_concat(item order by item), 
       projectName
from tb_user_poi p
inner join tb_member tm on p.id_pk = tm.id_pk
inner join tb_poi tp on p.poiNo = tp.poiNo
inner join tb_model t on tp.modelNo = t.modelNo
where tm.id_pk = 1
group by tm.id, modelName, projectName