Stu*_*tuR 5 mysql subquery left-join
我有一个简单的语言/模板ID表:
语言| 模板
en,t1
en,t1
au,t2
ge,t3
en,t1
ge,t2
ge,t3
模板始终为t1,t2或t3.总共有3种语言:en,au,ge.
表中有更多信息,我只是展示与此问题相关的内容,我将使用数据进行绘图,因此需要以这种格式返回:
en,t1,3
en,t2,0
en,t3,0
au,t1,0
au,t2,1
au,t3,0
ge,t1,0
ge,t2,1
ge,t3,2
然而,这会计算每种语言中出现的许多模板.但是,如果表中没有该特定语言的模板ID,我遇到的问题是返回零计数.
我认为它需要在模板ID上进行某种左连接子选择以确保为每种语言返回3个模板ID?
可能有更好的方法,我没有在MySQL中测试它,但以下在SQL Server 2005中工作:
Select a.language, b.template, count (c.template) as combo_count
from
(select distinct language from tablename) as a
inner join (select distinct template from tablename) as b on 1 < 2 /* this could be cross join, same thing. */
left outer join tablename c on c.language = a.language and c.template = b.template
group by a.language, b.template
order by 1, 2
Run Code Online (Sandbox Code Playgroud)
以下是您的示例数据的结果:
au t1 0
au t2 1
au t3 0
en t1 3
en t2 0
en t3 0
ge t1 0
ge t2 1
ge t3 2
Run Code Online (Sandbox Code Playgroud)