日付と数値を持ついくつかのレコードを含む 3 つのテーブルがあります (テーブルをマージすることはできません)。テーブルの情報を使用して棒グラフを作成したいと考えています。棒グラフは日ごとにグループ化されており、過去 7 日間を表示する必要があります。
以前は 2 つのテーブルがあり、次のクエリ スキームを使用していました。
SELECT
t.credits1,
t.credits2,
t.date
FROM
(
(
SELECT
t1.credits1,
t2.credits2,
t1.date
FROM
(
SELECT
SUM(credits) AS credits1,
date
FROM
table1
WHERE
table1.date >= DATE_SUB(CURDATE(), INTERVAL 7 DAY)
GROUP BY
DATE(table1.date)
) t1
LEFT JOIN
(
SELECT
SUM(credits) AS credits2,
date
FROM
table2
WHERE
table2.date >= DATE_SUB(CURDATE(), INTERVAL 7 DAY)
GROUP BY
DATE(table2.date)
) t2
ON t1.date = t2.date
)
UNION
(
SELECT
t1.credits1,
t2.credits2,
t1.date
FROM
(
SELECT
SUM(credits) AS credits1,
date
FROM
table1
WHERE
table1.date >= DATE_SUB(CURDATE(), INTERVAL 7 DAY)
GROUP BY
DATE(table1.date)
) t1
RIGHT JOIN
(
SELECT
SUM(credits) AS credits2,
date
FROM
table2
WHERE
table2.date >= DATE_SUB(CURDATE(), INTERVAL 7 DAY)
GROUP BY
DATE(table2.date)
) t2
ON t1.date = t2.date
)
) t GROUP BY
DATE(date)
(疑似コード)
しかし、2つ以上のテーブルでこれを行うにはどうすればよいですか? 過去 7 日間の日付を基準にして、毎回 7 レコードを取得する機会はありますか?
問題を指摘するには: ある日の最初のテーブルにレコードがない場合、その日の他のテーブルからレコードを取得できません。