2012-11-29 118 views
2

任何人都可以幫助我嗎?
我在查詢來自country_id鏈接的2個表,country_table和language_table。php mysql與concat連接表

country_table:

country_id continent  country 
100   asia   china 
101   asia   japan 
102   europe   UK 
103   europe   germany 

language_table:

country_id language_id  language 
100    01   mandarin 
100    02   cantonese 
102    03   english 
102    04   french 
102    05   welsh   

我想實現的是有或無的語言來顯示所有的國家。如果它有語言,它應該像下面的示例輸出一樣連接起來。

continent country language 
asia   china  mandarin, cantonese 
asia   japan  ---- 
europe  UK   english, french, welsh 
europe  germany ---- 
+0

什麼都試過了,年輕的箭魚? – Madbreaks

+0

我所做的是我插入另一個查詢(語言)內循環查詢國家名單,我知道它是一個壞主意,即時尋求幫助,以糾正它。 – swordfish

+0

添加更多信息和一些代碼! –

回答

3

可以使用GROUP_CONCAT()功能做到以下幾點:

select c.continent, 
    c.country, 
    group_concat(case 
       when l.language is null 
       then '----' else l.language end order by l.language) language 
from country_table c 
left join language_table l 
    on c.country_id = l.country_id 
group by c.continent, c.country 

SQL Fiddle with Demo

+0

與案例陳述很好的工作,你讓我在那裏。 – bikedorkseattle

+0

hi,bluefeet,你的答案正在工作,只是一個後續問題,該語言的選擇器是什麼?示例,$ row ['']? – swordfish

+0

我不熟悉那個語法。您可能需要發佈其他問題以獲得其他幫助。 – Taryn

0

你需要做這樣的事情。

SELECT ct.continent, ct.country, GROUP_CONCAT(lt.language) 
FROM country_table ct 
LEFT JOIN language_tabel lt USING(country_id) 
GROUP BY ct.country