1

group_concatを使用して特定の出力を生成する方法を理解するのに問題があります。

これが私が持っているものです:2つのテーブル:

1番目にはクライアントの情報が含まれています。

2番目には、各クライアントの動物の情報が含まれています。

この出力を生成する必要があります:(境界を省略しましたが、基本的にこれはテーブルの1列です)

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)

所属する各クライアントの下に表示する動物をグループ化する方法がわかりません。

ご協力ありがとうございました。

4

1 に答える 1

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;
于 2011-02-10T07:40:11.257 に答える