SQL聚合查询,按联结表中的条目分组
我通过 TableB 将 TableA 与 TableC 建立多对多关系。也就是说,
TableA TableB TableC
id | val fkeyA | fkeyC id | data
我希望在 TableA 上执行 select sum(val)
,并按与 TableC 的关系进行分组。 TableA 中的每个条目与TableC 至少有一个关系。例如,
TableA
1 | 25
2 | 30
3 | 50
TableB
1 | 1
1 | 2
2 | 1
2 | 2
2 | 3
3 | 1
3 | 2
应该输出
75
30
,因为表中的行 1 和行 3 与表 C 具有相同的关系,但表 A 中的行 2 与表 C 具有不同的关系。
我该如何为此编写 SQL 查询?
I have TableA in a many-to-many relationship with TableC via TableB. That is,
TableA TableB TableC
id | val fkeyA | fkeyC id | data
I wish the do select sum(val)
on TableA, grouping by the relationship(s) to TableC. Every entry in TableA has at least one relationship with TableC. For example,
TableA
1 | 25
2 | 30
3 | 50
TableB
1 | 1
1 | 2
2 | 1
2 | 2
2 | 3
3 | 1
3 | 2
should output
75
30
since rows 1 and 3 in Table have the same relationships to TableC, but row 2 in TableA has a different relationship to TableC.
How can I write a SQL query for this?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
编辑
啊哈 - 我现在明白你的意思了。让我再试一次:
edit
Ah ha - I now see what you're getting at. Let me try again:
嗯,在 MySQL 中可以这样写:
Hm, in MySQL it could be written like this:
似乎需要创建一个 key_list 才能允许分组依据:
因为 T-SQL 中不存在 GROUP_CONCAT:
It seems that is it needed to create a key_list in orther to allow group by:
Because GROUP_CONCAT don't exists in T-SQL: