MYSQLで2つのテーブルから新しいビューを作成したい。
下記のような2つのテーブル(table_a, table_b)から、新しいビュー(new_view)を作成したいのでが、思うような結果を得られません。
[table a]
Date_a(pk) | Value_a |
---|---|
20200602 | 1638 |
20200603 | 1630 |
20200604 | 1652 |
20200605 | 1619 |
20200608 | 1625 |
20200609 | 1619 |
20200610 | 1613 |
[table b]
Date_b(pk) | Value_b |
---|---|
20200601 | 1000 |
20200607 | 1200 |
20200608 | 1500 |
20200611 | 1600 |
[new_view]
Date_a(pk) | Value_a | Date_b | Value_b |
---|---|---|---|
20200602 | 1638 | 20200601 | 1000 |
20200603 | 1630 | 20200601 | 1000 |
20200604 | 1652 | 20200601 | 1000 |
20200605 | 1619 | 20200601 | 1000 |
20200608 | 1625 | 20200607 | 1200 |
20200609 | 1619 | 20200608 | 1500 |
20200610 | 1613 | 20200608 | 1500 |
[ルール]
- table_aをもとにtable_bをくっつける(JOINする)
- Date_aからみて過去日付且つ最も直近のDate_bとValue_bをくっつける(MAX(Date_b) WHERE Data_a>Date_b)
試したこと
下記のようなSQLを試してみましたが、思うような結果が得られません。
SELECT Date_a,Value_a,Date_b,Value_b FROM table_a
JOIN table_b
ON (table_a.Date_a = (SELECT MAX(table_b.Date_b) from table_a where table_a.Date_a > table_b.Date_b))
バージョンは下記です。
MariaDB > select version();
+-----------------+
| version() |
+-----------------+
| 10.2.10-MariaDB |
+-----------------+
(追記)
質問の内容が不明瞭でしたが、最終的にやりたいことは[new_view]のようなビューを作ることです。
そのもとになるSELECT文が分からない、という意味となります。
質問で例示したテーブルのCREATE文、INSERT文を記します。
CREATE TABLE table_a (
Date_a INTEGER,
Value_a INTEGER,
PRIMARY KEY(Date_a)
);
CREATE TABLE table_b (
Date_b INTEGER,
Value_b INTEGER,
PRIMARY KEY(Date_b)
);
INSERT INTO table_a VALUES
(20200602,1638),
(20200603,1630),
(20200604,1652),
(20200605,1619),
(20200608,1625),
(20200609,1619),
(20200610,1613);
INSERT INTO table_b VALUES
(20200601,1000),
(20200607,1200),
(20200608,1500),
(20200611,1600);
SQL使ってまだ経験が浅いため、お力いただけるとありがたいです。
よろしくお願いいたします。
回答1件
あなたの回答
tips
プレビュー