统计:将先前值与实际值,数据库结构进行比较

时间:2014-06-09 03:12:14

标签: php mysql database

我希望能够判断实际值是否高于前一周(我们需要-7个日历日)。所以我可以展示信息及其演变:

status

对于那种情况,我说的是我的工作项目的状态(帖子)。这是我的表(参见status和status_last_update):

table

为了实现这个新功能,我正在考虑2个解决方案。我想知道哪一个更好,以及它的原因。或者,如果有更好的解决方案。

第一个解决方案:我在实际表格中添加了2个列" previous_status" " previous_status_last_update"

第二个解决方案:我创建了一个新表,用于存储以前的状态和上次更新的日期。

第三种解决方案:我创建一个存储实际值和先前值的表:

  • nb_new
  • nb_new_last_update
  • nb_under_discussion
  • nb_under_discussion_last_update
  • nb_liked
  • nb_liked_last_update
  • nb_disliked
  • nb_disliked_last_update
  • nb_approved
  • nb_approved_last_update
  • nb_rejected
  • nb_rejected_last_update

  • nb_new_previous

  • nb_new_last_update_previous
  • nb_under_discussion_previous
  • nb_under_discussion_last_update_previous
  • nb_liked_previous
  • nb_liked_last_update_previous
  • nb_disliked_previous
  • nb_disliked_last_update_previous
  • nb_approved_previous
  • nb_approved_last_update_previous
  • nb_rejected_previous
  • nb_rejected_last_update_previous

1 个答案:

答案 0 :(得分:0)

为什么不在你的SQL语句中插入一点逻辑,将上周和本周的数据拉成一行,如下所示:

select
    sub.thisWeekStatus,
    sub.lastWeekStatus,
    sub.someOtherColumn
from
    (
        select
            case
                when dateField=cur_date() then status
            end as thisWeekStatus,
            case
                when dateField<>cur_date() then status
            end as lastWeekStatus,
            someOtherColumn
        from
            yourTable
        where
            dateField>'dateLastWeek'

    ) sub
group by
    sub.someOtherColumn

显然你需要稍微修补一下,我没有费心只使用日期函数来提取上周(或其他)的数据,但这可以调整以符合你的确切规格。