不同表中的多个值的总和

时间:2017-01-05 23:21:19

标签: mysql sql

我一直在尝试使用SUM(),但它一直没有用,也许我用它错了。

这就是我的表格,我有3:命运,酒店和储备

              Table 1 = destiny
               des_id | des_name   | des_price
                1     | Brazil     | 800         
                2     | Paris      | 900  

              Table 2 = hotel
              hot_id  | hot_name  | hot_price
              1       | Snowflake | 200
              2       | Aurora    | 300

              Table 3 = reserve
              res_id | hotel_id | destiny_id | res_total
                 1   |    1     |     1      | 

我想要保留区中所选ID的res_total = hot_price + destiny_price,但我得到的abusrd金额不应该像总数6000或23000那样发生。

这是我一直在尝试的代码:

Select res_id, (Sum(hotel_price) + Sum(destiny_price)) as res_total            
from reserve, hotel, destiny             
group by res_id;

1 个答案:

答案 0 :(得分:0)

您的查询缺少连接条件,因此每个元组都连接到其他元组(笛卡尔积,交叉连接)。请尝试以下查询:

select r.res_id, ifnull(sum(d.des_price),0) + ifnull(sum(h.hot_price),0)
from reserve r
  left join destiny d on r.destiny_id = d.des_id
  left join hotel h on r.hotel_id = h.hot_id
group by r.res_id

该查询假定des_idhot_id分别是destinyhotel中的密钥。该查询可以处理未填写预留中destiny_id和/或hotel_id的情况(因此语句中的left joinifnull。)