Transaction Code Credit Debit Date Year Month Transaction Type Paid By Customer ID Reference
1110101 100 0 2013-06-26 2013 7 RVC Cash 10547 4010101
4010101 0 100 2013-07-01 2013 7 INV 10547 0上面是一个事务表。发生的任何事务都会被转储到这里。
现在,这里的挑战部分是,我需要在2013年为所有客户获得全年到期的所有未偿还款项。RVC (交易类型下)表示已支付的金额,as INV (交易类型下)表示尚未支付的金额。您看到的两行是INV,它被提升并随后被支付,它以RVC显示。现在,每个月都会自动创建INV,只要有一些付款,就会创建RVC。
现在,我如何知道哪个INV需要支付。因为这是非常混乱的比较,因为参考加上年份加上月份需要与RVC进行比较。
我们如何通过MySQL查询来实现?
对此有什么帮助吗?
发布于 2014-03-29 21:52:45
如果要检查未结付款,您可以使用类似以下内容:
SELECT * FROM transactions
WHERE transaction_type='INV'
AND transaction_code
NOT IN (SELECT reference FROM transactions where transaction_type='RVC');编辑:
由于这是一个在大型表上执行的相当昂贵的查询,因此我可能会将客户id存储在INV行的客户ID字段中,并将引用字段保留为空。
在处理付款时,请将相应INV行中的参考字段更新为付款参考'RVC‘行的标识。这应该很容易,因为您找到了要插入到“RVC”行中的正确交易代码。然后,您可以使用正在创建的引用(当前RVC行)来更新'INV‘记录
UPDATE transactions SET reference=$rvc_id WHERE transaction_code=$inv_id;因此,在处理完付款后,将填写引用字段。
未支付的INV行将有一个空白引用,这意味着要检查未支付的'INV‘,您只需运行以下命令:
SELECT * FROM transactions WHERE transaction_type='INV' AND reference IS NULL;https://stackoverflow.com/questions/22731794
复制相似问题