【发布时间】:2011-01-28 17:10:38
【问题描述】:
我们有一个订单簿和发票系统,我的任务是尝试从这些表中输出每月滚动总计。
但我真的不知道从哪里开始。我认为有一些我什至还不知道的 SQL 语法。我熟悉 INNER/LEFT/JOINS 和 GROUP BY 等,但按日期分组令人困惑,因为我不知道如何将数据限制在当时分组的当前日期。我认为这将涉及将表连接到它们自己或可能是子选择。我一直认为最好避免在绝对必要时进行子选择。
系统基本上有3个表
订单:order_id、货币、order_stamp
orders_lines:order_line_id、invoice_id、order_id、价格
发票:invoice_id、invoice_stamp
order_stamp 和 invoice_stamp 是存储为整数的 UTC unix 时间戳,而不是 MySQL 时间戳。
我正在尝试按年/月列出在该时间点显示当前未开票订单总数(价格总和)的列表。
当前订单是 order_stamp 小于或等于当月 1 日 00:00 的订单。
未开票的订单是 invoice_stamp 为空或 invoice_stamp 大于当月 1 日 00:00 的订单。
那时可能还没有相关发票,并且 invoice_id 可能为空。
有人对我应该加入什么以及我需要分组有什么建议吗?
干杯,B
【问题讨论】:
-
这里是滚动总计的一个很好的例子,可以帮助您入门。 dev.mysql.com/tech-resources/articles/…
-
有趣的是,我已经通读了该内容,但在尝试将其应用于我的情况时感到头疼。这是一个示例查询,应该获取我想要的一个月的数据: SELECT SUM(
orders_lines.price) FROMorders_linesLEFT JOINordersUSING(order_id) LEFT JOINinvoicesON @987654328 @.invoice_id=invoices.invoice_idWHEREorders.order_stamporders_lines.invoice_id为空或invoices.`invoice_stamp > UNIX_TIMESTAMP('yyyy-mm-01 00:00:00') ) 其中 yyyy-mm 是来自父查询的当前月份
标签: mysql