2013-02-27 35 views
0

我有三张表。找出达到累积总和值的日期

属性

property_id 

预订:

reservation_id 
reservation_property_id 
reservation_date 

付款

payment_id 
payment_reservation_id 
payment_amount 

的保留CAN H与它相关的许多付款和一个属性可以有很多保留。

我想要解决的问题是找出每个房产收入达到500英镑的预订日期。

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

希望这是有道理的。

在此先感谢您的帮助。

+0

我不确定这是否会在SQL中执行。听起来像是更适合您的服务器端语言的选择。 – 2013-02-27 15:28:56

回答

0

请有这一个尝试:

SELECT reservation_property_id, MIN(reservation_date) 
FROM (SELECT IF(@prevProperty != q.reservation_property_id, 
       @runningtotal:=0, 
       @runningtotal:[email protected] + 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 

我没有加入到属性表,不过,进出方便:)

的想法基本上是计算运行总计按照财产和日期排列的桌上付款。在外部查询中,只需选择运行总数等于或大于阈值的最小日期。