mysql加入和求和问题

时间:2014-03-27 14:34:29

标签: php mysql sql

我遇到了一些麻烦。

这是我的表格的一个例子。

Booking

id zone_id name excursion_id
1  2               1
2  1               1
3  2               1

我有数量的表格     booking_price

id_booking id_price quantity
1              1       2
1              2       3
2              1       1
2              2       0
3              1       2
3              2       3

这里是区域表

Zone
id  Name
1    a
2    b
3    c

所以我希望有一个像这样的表

Zone_id Quantity
1          1  
2          10
3          0

问题是当我连接表并通过excursion_id过滤时我没有获得所有区域。

我想知道每个区域有多少人。

2 个答案:

答案 0 :(得分:1)

我认为更好的方法是

select z.id, coalesce(sum(bp.quantity),0) as quantity
from Booking b 
right join Zone z on z.id = b.zone_id AND b.excursion_id = 1
left join booking_price bp on bp.id_booking = b.id
group by z.id

demo http://sqlfiddle.com/#!2/771f5/13

答案 1 :(得分:0)

您可以使用以下查询:

   SELECT zone.id as zone_id,
          sum(quantity) as Quantity
     FROM zone
LEFT JOIN Booking on Booking.zone_id = zone.id
LEFT JOIN Excursion on Excursion.id_booking = Booking.id
 GROUP BY zone.id