mysql找到优秀的条目

时间:2014-03-29 13:36:20

标签: php mysql

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查询实现它?

对此有何帮助?

1 个答案:

答案 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;