我在弄清楚如何使用group_concat来产生某些输出方面遇到了一些麻烦。
这是我所拥有的:2个表:
1st包含客户的信息,
2nd包含动物的信息 每个客户。
我必须产生这个输出:(我省略了边界,但基本上这是表格的一列)
Client: 25 Harris, Eddie
Animals: Koshka(cat),Gutsy(snake),Edger(snake),Fritz(cat),George(turtle),Big Mike(turtle)
这是我尝试过的:
select group_concat ( distinct
'Client: ', CL.cl_id, space(1),
CL.cl_name_last,', ',
CL.cl_name_first,'\n',
'Animals: ', AN.an_name, '(',
ifnull(AN.an_type, 'No Animals'), ')', '\n') as 'Client Info'
from p_vets.vt_clients CL
join p_vets.vt_animals AN using (cl_id)
group by CL.cl_id;
我得到以下输出(表中的一小部分):
Client: 25 Harris, Eddie
Animals: Koshka(cat)
,Client: 25 Harris, Eddie
Animals: Gutsy(snake)
,Client: 25 Harris, Eddie
Animals: Edger(snake)
,Client: 25 Harris, Eddie
Animals: Fritz(cat)
,Client: 25 Harris, Eddie
Animals: George(turtle)
,Client: 25 Harris, Eddie
Animals: Big Mike(turtle)
我不明白如何将动物分组以便在他们所属的每个客户下展示。
感谢您的帮助。
答案 0 :(得分:1)
group_concat应该只包括动物部分。
试试这个:
select concat(
'Client: ', CL.cl_id, space(1), CL.cl_name_last,', ', CL.cl_name_first,'\n',
'Animals: ', group_concat(
concat( AN.an_name,'(',coalesce(AN.an_type, 'No Animals'),')')
)
)
from p_vets.vt_clients CL
join p_vets.vt_animals AN using (cl_id)
group by cl_id;