【发布时间】:2014-06-17 22:29:22
【问题描述】:
运行 SQL 查询,该查询会调出包括最近交易在内的发票列表。
要求:
- 使用 1 个查询获取此信息(可能需要内部查询)
- 包括尚未进行交易的发票
- 能够按发票或交易中的字段进行过滤。以下示例场景:
- 示例1:最后交易状态为
settled的所有发票 - 示例 2:状态为
unpaid且没有最后一笔交易的所有发票)
- 示例1:最后交易状态为
棘手的部分是我们正在处理多对多场景。我发现的所有 StackOverflow 帖子都是关于一对多场景的。以下 SO 帖子似乎将我带向了正确的方向,但无法安静地弄清楚:SQL join: selecting the last records in a one-to-many relationship
我在这里使用多对多的原因是因为交易可以是许多发票的一部分。基本上可以将多张发票分配给同一个付款配置文件,因此我们创建一个交易(而不是为每张发票单独交易)。此外,一张发票可以有很多交易,因为交易可以被拒绝。
我知道您可能会想,为什么不创建一个总体发票,然后将当前发票设置为 invoice_lines 或类似的内容,但不幸的是,此时无法更改架构。
这是我的表格的大纲:
任何帮助将不胜感激!
【问题讨论】:
-
你在哪里卡住了?找到任何给定 invoice_id 的最新交易应该不会太难。那么您只需在此列中加入您的发票表即可。
-
@VMai,我希望通过一个查询来执行此操作,这样我就可以使用过滤器运行发票报告(如果有意义的话)。
-
@VMAI 更具体一些,比如“SELECT * WHERE invoice.amount > 50”或类似的东西。
标签: mysql sql database relational-database