MySQL按另一个表的总和字段查询订单

MySQL按另一个表的总和字段查询订单,mysql,sql,sum,Mysql,Sql,Sum,我有三张桌子: 酒店:id,酒店名称 酒店供应商:id,供应商名称 酒店价格:id,酒店id,供应商id,分配,价格 我想按酒店价格下降的总和(分配)从酒店订单中选择所有,因此结果从分配最多的酒店排序。如何做到这一点…,感谢您的任何想法…,谢谢 对不起,我忘记了一件事,还有另一个条件,在酒店价格上,若价格=0,则该行的分配不计入总和(分配) 尝试以下变体: select h.id, h.hotel_name, sum(hp.allotment) from hotel h join hotel

我有三张桌子:

酒店:id,酒店名称

酒店供应商:id,供应商名称

酒店价格:id,酒店id,供应商id,分配,价格

我想按酒店价格下降的总和(分配)从酒店订单中选择所有,因此结果从分配最多的酒店排序。如何做到这一点…,感谢您的任何想法…,谢谢

对不起,我忘记了一件事,还有另一个条件,在酒店价格上,若价格=0,则该行的分配不计入总和(分配)

尝试以下变体:

select h.id, h.hotel_name, sum(hp.allotment)
  from hotel h join hotel_price hp on (h.id = hp.hotel_id)
 group by h.id, h.hotel_name
 order by 3 desc;
尝试以下变体:

select h.id, h.hotel_name, sum(hp.allotment)
  from hotel h join hotel_price hp on (h.id = hp.hotel_id)
 group by h.id, h.hotel_name
 order by 3 desc;

澄清你的问题并提供一些数据澄清你的问题并提供一些数据谢谢你的快速回答,这是有效的,但还有一个条件,我第一次忘记写我的问题。@ChadTimen如果你的意思是你不想看到sum=0的酒店,然后您只需在查询中添加条件
,其中hp.price 0
。这不是获取酒店结果的条件,而是获取金额(分配)的条件,例如酒店A有来自酒店供应商的2个价格,第一个价格是100,分配5,第二个价格是0,分配4,因此正确的金额(分配)是5而不是9,因为价格0不算在内。对不起,我的解释太复杂了。@ChadTimen您的解释很清楚。如果您添加了我在前面的评论中提到的条件,您应该会得到所需的结果。感谢您的快速响应,这是有效的,但还有一个条件,我第一次忘记写我的问题。@ChadTimen如果您的意思是不想看到sum=0的酒店,然后您只需在查询中添加条件
,其中hp.price 0
。这不是获取酒店结果的条件,而是获取金额(分配)的条件,例如酒店A有来自酒店供应商的2个价格,第一个价格是100,分配5,第二个价格是0,分配4,因此正确的金额(分配)是5而不是9,因为价格0不算在内。对不起,我的解释太复杂了。@ChadTimen您的解释很清楚。如果您添加我在前面的评论中提到的条件,您应该会得到所需的结果。