查询以显示一列乘以

时间:2018-10-02 20:17:08

标签: sql multiple-columns

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

感谢托克

3 个答案:

答案 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;