タスクごとに今週の総労働時間を計算するクエリがあります。
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
これを行うための最良の方法は何ですか?クエリ全体のバージョンを1つだけ保持したいと思います。1つの考えは、PHPを使用して、次のようにクエリに「-1」を追加することです。
WHERE yearweek(record_date, 3) = yearweek(now(), 3) <?php if (prev) {echo "- 1" ;} ?>
これはうまくいくはずですが、どうすれば前の状態を判断できますか?クエリ全体を関数内に配置して、デフォルトでは「Time_hours(0)」、以前の場合は「Time_hours(1)」にする必要がありますか?それとももっと良い方法がありますか?
コードを管理しやすくし、ベストプラクティスに従うことを懸念しています。ヒントをいただければ幸いです。ありがとう!