我有一个查询,它按任务计算本周工作的总小时数:
SELECT name AS 'Task Name'
, sum(hours) AS `Total Hours`
FROM time_records
WHERE yearweek(record_date, 3) = yearweek(now(), 3)
GROUP BY
weekday(record_date), name
WHERE 子句指定当前周:
WHERE yearweek(record_date, 3) = yearweek(now(), 3)
此数据使用 MySQL 查询和 PDO 语句显示为表。
我现在想为查看者添加一个选项,通过单击表格下方的链接(例如,“上一周”)来查看前一周的数据。为了显示该数据,我需要更新 WHERE 子句以查询前一周的数据:
WHERE yearweek(record_date, 3) = yearweek(now(), 3) - 1
我想知道最好的方法是什么?我宁愿只保留整个查询的一个版本。一种想法是使用PHP将“- 1”添加到查询中,例如:
WHERE yearweek(record_date, 3) = yearweek(now(), 3) <?php if (prev) {echo "- 1" ;} ?>
我认为这应该可行,但我如何确定 prev 条件?我是否应该将整个查询放在一个函数中,以便默认情况下它可以是“Time_hours(0)”,而之前的查询可以是“Time_hours(1)” - 还是有更好的方法?
我担心保持代码可管理并遵循最佳实践。任何提示将不胜感激。谢谢!