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(在交易类型下)是指支付的金额,其中INV(在交易类型下)是指尚未支付的金额。您看到的两行是INV,它是在RVC中显示并随后支付的。现在每个月都会自动创建INV,并且只要有一些付款,就会创建RVC。
现在我怎么知道还有哪些INV付款。由于参考加上年份和月份需要与RVC进行比较,因为它非常容易比较。
我们如何通过MySQL查询实现它?
对此有何帮助?
答案 0 :(得分:0)
如果您想查看未结付款,可以使用以下内容:
SELECT * FROM transactions
WHERE transaction_type='INV'
AND transaction_code
NOT IN (SELECT reference FROM transactions where transaction_type='RVC');
修改强>
由于这对大型表来说是一个相当昂贵的查询,我可能会将客户ID存储在INV行的customer ID字段中,并将引用字段保留为null。 处理付款时,将相应INV行中的参考字段更新为付款参考“RVC”行的ID。这应该很简单,因为您要找到正确的事务代码以插入“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;