group_concat вопрос (mysql) - PullRequest
       4

group_concat вопрос (mysql)

1 голос
/ 10 февраля 2011

У меня возникли проблемы с выяснением того, как использовать group_concat для получения определенного вывода.

Вот что у меня есть: 2 таблицы:

1-й содержит информацию о клиентах,

2-й содержит информацию о животных для каждого клиента.

У меня естьчтобы получить этот вывод: (я опустил границы, но в основном это один столбец таблицы)

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)

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

Спасибо за вашу помощь.

1 Ответ

1 голос
/ 10 февраля 2011

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