MySQL 左连接子选择
我有一个简单的语言/模板 ID 表:
语言 |模板
en, t1
zh, t1
au, t2
ge, t3
zh, t1
ge, t2
ge, t3
模板始终是 t1、t2 或 t3。总共有 3 种语言:en、au、ge。
表中有更多信息,我只是显示与这个问题相关的内容,我将使用数据进行绘图,因此需要它以这种格式返回:en
, t1, 3
zh, t2, 0
zh, t3, 0
au, t1, 0
au, t2, 1
au, t3, 0
ge, t1, 0
ge, t2, 1
ge, t3, 2
无论每种语言中有多少个模板出现,它都会进行计数。但是,我遇到的问题是,如果表中没有该特定语言的模板 ID,则返回零计数。
我在想它需要在模板 id 上进行某种左连接子选择,以确保为每种语言返回 3 个模板 id?
I have a simple table of languages / template id's:
language | template
en, t1
en, t1
au, t2
ge, t3
en, t1
ge, t2
ge, t3
Template is always either t1,t2, or t3. In total there are 3 languages: en, au, ge.
There is lots more information in the table, I am just showing what is relevant to this question, I will be using the data for graphing and so need it returning in this format:
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
This counts however many template occurrences there are in each language. But, the problem I have is returning a zero count if there are no template id's for that particular language in the table.
I was thinking it would need some sort of left join sub select on the template id to make sure the 3 template id's are returned for each language?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
可能有更好的方法来做到这一点,我还没有在 MySQL 中测试它,但以下方法在 SQL Server 2005 中有效:
以下是示例数据的结果:
There might be a better way of doing this, and I haven't tested it in MySQL, but the following works in SQL Server 2005:
Here are the results with your sample data:
您需要的是两个表格,其中列出了语言和模板的可能值。
然后你可以做这样的事情:
What you need is two tables that list the possible values for language and template.
Then you can do something like this: