1

日付と数値を持ついくつかのレコードを含む 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 レコードを取得する機会はありますか?

問題を指摘するには: ある日の最初のテーブルにレコードがない場合、その日の他のテーブルからレコードを取得できません。

4

1 に答える 1