2012-12-06 69 views
0

我正在構建一個報告數據庫,部分需求是創建多個布爾列來平整1:M關係。下面是一個例子:SQL查詢:一對多關係是否包含元素X

表1是研究表並有一個唯一的ID。

表2是語言表並具有1:表中的許多關係1

Study Table 
Id Name 
1  Study1 
2  Study2 
3  Study3 

LanguageTable 
StudyId Language 
1   English 
1   French 
1   Chinese 
2   French 
3   Chinese 

我想有幾列在我的報告表,如是英文是在歐洲語言

Study Language Report 
StudyId  IsInEnglish  IsInEuropeanLanguage 
1   true    true     
2   false    true 
3   false    false 

我將如何建立一個SQL查詢來生成所給出的表1和表2這個表?

回答

1
select s.StudyId, 
      max(case when Language='English' then 1 else 0 end) IsInEnglish, 
      max(case when Language in ('English','French') then 1 else 0 end) IsInEuropeanLanguage 
    from study s 
left join languages l on s.studyid = l.studyid 
group by s.studyid