首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >mysql查找未完成的条目

mysql查找未完成的条目
EN

Stack Overflow用户
提问于 2014-03-29 21:36:20
回答 1查看 132关注 0票数 0
代码语言:javascript
复制
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查询来实现?

对此有什么帮助吗?

EN

回答 1

Stack Overflow用户

发布于 2014-03-29 21:52:45

如果要检查未结付款,您可以使用类似以下内容:

代码语言:javascript
复制
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‘记录

代码语言:javascript
复制
UPDATE transactions SET reference=$rvc_id WHERE transaction_code=$inv_id;

因此,在处理完付款后,将填写引用字段。

未支付的INV行将有一个空白引用,这意味着要检查未支付的'INV‘,您只需运行以下命令:

代码语言:javascript
复制
SELECT * FROM transactions WHERE transaction_type='INV' AND reference IS NULL;
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22731794

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档