0

我有三张桌子。

特性

property_id

预订:

reservation_id
reservation_property_id
reservation_date

付款

payment_id
payment_reservation_id
payment_amount

一个预订可以有很多与之相关的付款,一个房产可以有很多预订。

我想弄清楚如何做的是找出每处房产收入达到 500 英镑的预订日期。

因此,我需要计算出付款金额的累计总和,并找出每处房产达到 500 英镑门槛的日期。

希望这是有道理的。

在此先感谢您的帮助。

4

1 回答 1

0

请试试这个:

SELECT reservation_property_id, MIN(reservation_date) 
FROM (SELECT IF(@prevProperty != q.reservation_property_id, 
                @runningtotal:=0, 
                @runningtotal:=@runningtotal + payment_amount) AS runningtotal,
             @prevProperty := q.reservation_property_id, q.*
      FROM (SELECT *
            FROM reservations r 
            INNER JOIN payments p 
                    ON p.payment_reservation_id = r.reservation_id 
                    /*not sure how your tables are linked*/
            , (SELECT @runningtotal:=0, @prevProperty:=0) vars
            ORDER BY r.reservation_property_id, reservation_date) q
      ) sq
WHERE runningtotal >= 500
GROUP BY reservation_property_id

不过,出于方便,我没有加入 Properties 表 :)

这个想法基本上只是计算按属性和日期排序的表格上的总付款。在外部查询中,只需选择运行总计等于或大于阈值的最小日期。

于 2013-02-27T16:18:54.287 回答