[英]Double group by in multiple tables
我有三个连接的表。
select *
from Ordering
inner join Client on client.id=ordering.client_id
inner join Dish on ordering.dish_id=dish.id
我想按name_dish
和后来的client_id
对总quantity
列和分组。
现在我做到了,但这还不够(对于一个客户):
select client.familyName, client.name, client.phone, sum(ordering.quantity),dish.name_dish
from Ordering
inner join Client on client.id=ordering.client_id
inner join Dish on ordering.dish_id=dish.id
where ordering.client_id=1
group by (dish.name_dish)
从现有查询开始,您需要将不在聚合 function 中的所有select
ed 列放在group by
子句中(即除quantity
之外的所有列)。 我还建议包括client
和dish
桌的主键,以防两个客户端(分别是菜)具有相同的名称。
考虑以下聚合查询:
select c.family_name, c.name, c.phone, sum(o.quantity) sum_quantity, d.name_dish
from ordering o
inner join client c on c.id = o.client_id
inner join dish d on o.dish_id = d.id
group by c.client_id, c.family_name, c.name, c.phone, d.id, d.name_dish
一些数据库(实际上是 Postgres)只满足group by
子句中两个表的主键:
select c.family_name, c.name, c.phone, sum(o.quantity) sum_quantity, d.name_dish
from ordering o
inner join client c on c.id = o.client_id
inner join dish d on o.dish_id = d.id
group by c.client_id, d.id
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.