2013-06-19 68 views
2

我有這些表數據的基礎上:SQL查詢,以CASE列

languages: id, name 
countries: id, name 
country_languages: id, country_id, language_id 

我需要一個查詢,給了我一個表具有以下字段:

language_id 
language_name 
active 

所有語言應該進入結果。但是,如果在國家id=39中使用此語言,那麼active列應該是真的,否則應該是錯誤的。 在mysql有沒有任何簡單的查詢?

感謝

回答

1

比賽langauges與使用left outer join映射表,然後檢查映射表的id欄,看看是否有一個匹配(active = 1)否(active = 0)。

select distinct 
    l.id 
    , l.name 
    , case when cl.id is null then 0 else 1 end as active 
from languages l left outer join country_languages cl 
    on l.id = cl.language_id 
where cl.id = 39 
+0

@XLAnt:謝謝!固定。 – davek

+2

我會考慮把它作爲'sum(case cl.id爲null,然後是0 else 1 end)'並且通過l.id,l.name來做group,所以語言只出現一次 –

+0

@StephLocke,使用sum和小組幫了忙。 – gerrnar