2011-02-10 137 views
1

我搞清楚如何使用group_concat來產生某些輸出。group_concat問題(mysql)

以下是我有: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) 

我不明白如何將動物分組在每個他們屬於的客戶下進行。

謝謝你的幫助。

回答

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; 
+0

謝謝! :)還有一個問題,如果我離開加入桌子,而其中一個客戶會出現沒有動物會'合併(AN.an_type,'沒有動物')'仍然工作?它讓我對所有沒有動物的條目都是簡單的'NULL'。 – notrockstar 2011-02-10 07:53:07