我有以下3张桌子;
表名:
{% include page_loop.html inner_template="xml_template.xml" %}
表语言:
.weekview-allday-table {
display:none;
}
.weekview-normal-event-container{
display:none;
}
.calendar-event-wrap{
display:none;
}
.weekview-normal-event-container {
margin-top: 0;
}
Table_Name_Lang
user_id Name
------------------
1 Mark
2 Tom
3 Ana
如何创建查询以显示如下所示的预期结果?
language_id Language
-----------------------
1 English
2 German
感谢托克
答案 0 :(得分:1)
我会做的:
select n.name,
max(case when l.language = 'English' then l.language end) as has_English,
max(case when l.language = 'German' then l.language end) as has_German
from names n join
name_lang nl
on nl.user_id = n.user_id join
lang l
on nl.language_id = l.language_id
group by n.name
答案 1 :(得分:0)
您可以尝试将JOIN
与条件汇总函数一起使用
SELECT Name,
MAX(CASE WHEN tnl.language_id = 1 then tl.Language end),
MAX(CASE WHEN tnl.language_id = 2 then tl.Language end)
FROM
Table_Name_Lang tnl
JOIN Table_Names tn on tnl.language_id = tn.language_id
JOIN Table_Language tl on tl.user_id = tnl.user_id
GROUP BY Name
答案 2 :(得分:0)
我认为您应该使用数据透视:
select n.name,[0] as language_one,[1] as language_two,[2],[3] from
(select n.name,tl.language
tablename n
left join Table_Name_Lang tnl on n.userid=tnl.userid
left join table_language tl on tl.id=tnl.id
group by n.name,tl.language
)T
pivot
(
language
for name in [0],[1],[2],[3]
)AS PivotTable;