2013-04-30 38 views
-1

我有一个包含余额的accounts的列表。 我也有一个表items,每个项目都有一个由account_id标记的项目列表。 每个项目都有一个状态,该项目标记为0 - 未付和1 - 付款。循环记录,根据余额更新状态

我需要查询或存储过程,而可以顺利通过,并同时通过日期 - 时间

排序为实例做标记:我有三个项目的价值每$ 50我支付$ 120插入一个帐户。查询/过程后,前两项应标记为1,最后一项为0

注意:项目可以在标记为已付款后被删除,余额可随时更改,因此我不能将项目标记为付款进来,我需要一种方法来做到这一点在批处理模式,只需运行该查询/存储过程的每一个变化是由

+3

你到目前为止尝试过什么?你有你的标签'mysql'和'sql-server'吗? – praveen 2013-04-30 05:48:22

+0

我还没有尝试过任何东西。我从来没有遇到过这样的事情。我不确定如何解决这个特定的问题。到目前为止,我已经设法计算出每个账户的总余额以及有多少钱是关于物品价格的......我把sql-server,因为我想也许我需要某种运行在服务器上的脚本 – davidelias16 2013-04-30 06:10:59

回答

0
CREATE TABLE my_table 
(item_id INT NOT NULL AUTO_INCREMENT PRIMARY KEY, amount INT NOT NULL); 

INSERT INTO my_table VALUES (NULL,50); 
INSERT INTO my_table VALUES (NULL,50); 
INSERT INTO my_table VALUES (NULL,50); 

SELECT * FROM my_table; 
+---------+--------+ 
| item_id | amount | 
+---------+--------+ 
|  1 |  50 | 
|  2 |  50 | 
|  3 |  50 | 
+---------+--------+ 

SELECT x.* 
     , SUM(y.amount) rt 
    FROM my_table x 
    JOIN my_table y 
    ON y.item_id <= x.item_id 
    GROUP 
    BY x.item_id; 
+---------+--------+------+ 
| item_id | amount | rt | 
+---------+--------+------+ 
|  1 |  50 | 50 | 
|  2 |  50 | 100 | 
|  3 |  50 | 150 | 
+---------+--------+------+ 

SELECT x.* 
     , CASE WHEN SUM(y.amount) < 120 THEN 1 ELSE 0 END paid 
    FROM my_table x 
    JOIN my_table y 
    ON y.item_id <= x.item_id 
    GROUP 
    BY x.item_id; 
+---------+--------+------+ 
| item_id | amount | paid | 
+---------+--------+------+ 
|  1 |  50 | 1 | 
|  2 |  50 | 1 | 
|  3 |  50 | 0 | 
+---------+--------+------+ 

注意,你的情况的时候,你可能会在评价的结果不太感兴趣,定已经被“支付”了。

+0

否I我对已经支付的结果感兴趣,但对于我们正在使用的数量感兴趣,例如,在两种情况下,我们是否可以从帐户余额中采用此帐户号码并通过account_id关联,并且可以告诉我如何更新帐户调用项目而不是查看它? – davidelias16 2013-04-30 07:53:29

+0

如果不了解更多关于您的餐桌结构的信息,我会将其留给其他人,更有见识和更倾向于接受挑战。 – Strawberry 2013-04-30 08:08:09