【问题标题】:MySQL historical data lookupMySQL历史数据查找
【发布时间】:2015-10-18 01:55:30
【问题描述】:

我一直在环顾四周并试图让它发挥作用,但我似乎无法得到它。我有 2 张桌子:

TABLE: products

| id | name      | some more values |
|----|-----------|------------------|
| 1  | Product 1 | Value 1          |
| 2  | Product 2 | Value 2          |
| 3  | Product 3 | Value 3          |


TABLE: value

| pid | value     | stamp            |
|-----|-----------|------------------|
| 1   | 7         | 2015-07-11       |
| 2   | 4         | 2015-07-11       |
| 3   | 8         | 2015-07-11       |
| 1   | 9         | 2015-07-21       |
| 2   | 4         | 2015-07-21       |
| 3   | 6         | 2015-07-21       |

第一个表只是有一个产品列表,第二个表有每个产品的值(按 pid),时间戳是值。 注意:时间戳不是每天,也不是均匀分布的。

我想要的是这样的结果表:

| id | name      | some more values | value now | value last month |
|----|-----------|------------------|-----------|------------------|
| 1  | Product 1 | Value 1          | 9         | 7                |
| 2  | Product 2 | Value 2          | 4         | 4                |
| 3  | Product 3 | Value 3          | 6         | 8                |

其中“value now”是最新时间戳的值,“value lastmonth”是最接近最新时间戳的时间戳值 - 30 天。请记住,-30 天可能没有特定的时间戳,查询需要找到最接近的时间戳。 (只向上或向下看没有关系,这是一个近似值。)

我提出了一些巨大的疑问,但我很确定一定有更简单的方法......任何帮助将不胜感激。

【问题讨论】:

  • 问题:你有没有重复的时间戳?也就是同一个产品的同一个时间戳?

标签: mysql


【解决方案1】:

假设您通过 PHP 或 mysql 函数获取上个月和年份,这是一个未检查的查询,我希望它第一次可以工作:

SELECT *, v_now, v_lastmonth FROM products p 
LEFT JOIN (SELECT `value` AS v_now FROM value ORDER BY stamp DESC) AS v_now ON p.id=v_now.pid
LEFT JOIN (SELECT `value` AS v_lastmonth FROM value 
WHERE month(stamp)='$month' AND year(stamp)='$year'
ORDER BY stamp DESC) AS v_now ON p.id=v_now.pid

您可以使用 group by 为每个产品结果获取一行。

【讨论】:

  • 在 MySQL 中获取最后一个月或一年是我遇到问题的部分。你能详细说明一下吗?
  • 我没有关注你,但我会试试这个:使用日期和时间等 mysql 函数可能会使你的语法复杂化并降低代码性能。您可以使用 PHP 函数来获取上个月和上一年的数据,并在查询中使用它,而不是使用 mysql 函数,如“间隔”。这是另一个像你一样的问题:stackoverflow.com/questions/6845604/…
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-05-02
  • 2022-11-10
  • 2013-08-07
  • 1970-01-01
相关资源
最近更新 更多