1
2つのMySQLテーブルがあります。これは、派生テーブルとして参加しアクセスする必要があります。いくつかのダミー行の存在しないレコードの場合、MySQLはnullを返します。
Basicの例:
CREATE DATABASE Test;
USE Test;
CREATE TABLE TableOne(
Id INT auto_increment NOT NULL,
SomeField FLOAT,
Timestamp DATETIME,
PRIMARY KEY(Id)
);
CREATE TABLE TableTwo(
Id INT auto_increment NOT NULL,
SomeField FLOAT,
Timestamp DATETIME,
PRIMARY KEY(Id)
);
INSERT INTO TableOne
(Timestamp, SomeField)
VALUES
('2017-06-30 23:30:00', RAND()),
('2017-06-30 23:45:00', RAND()),
('2017-07-01 00:00:00', RAND()),
('2017-07-01 00:15:00', RAND()),
('2017-07-01 00:30:00', RAND()),
('2017-07-01 00:45:00', RAND()),
('2017-07-01 01:00:00', RAND()),
('2017-07-01 01:15:00', RAND()),
('2017-07-01 01:30:00', RAND());
INSERT INTO TableTwo
(Timestamp, SomeField)
VALUES
('2017-06-30 23:30:00', RAND()),
('2017-06-30 23:40:00', RAND()),
('2017-06-30 23:50:00', RAND()),
('2017-07-01 00:00:00', RAND()),
('2017-07-01 00:10:00', RAND()),
('2017-07-01 00:20:00', RAND()),
('2017-07-01 00:30:00', RAND()),
('2017-07-01 00:40:00', RAND()),
('2017-07-01 00:50:00', RAND()),
('2017-07-01 01:00:00', RAND()),
('2017-07-01 01:10:00', RAND()),
('2017-07-01 01:20:00', RAND()),
('2017-07-01 01:30:00', RAND());
とテーブルを読み取るために、私が使用しています:
タイムスタンプ:
SELECT
SomeField,
Timestamp
FROM
(
SELECT
SomeField,
Timestamp
FROM
TableOne
UNION
SELECT
SomeField,
Timestamp
FROM
TableTwo
) d1
WHERE
d1.Timestamp BETWEEN '2017-07-01 00:00:00' AND '2017-07-01 01:00:00'
ORDER BY
d1.Timestamp;
このクエリは、次の表を返します。 Test.TableOneでは(例として)15分ごとです。
Test.TableTwoのタイムスタンプは(例として)10分ごとです。
私ができることをしたいのは、のすべてのタイムスタンプと、対応するDATETIMEの 'SomeField'列にNullが表示された派生テーブルを返します。
のようになりますでしょう(上記の表を使用して)例:私は別の番号を試してみました
+------------+---------------------+
| SomeField | Timestamp |
+------------+---------------------+
| 0.380433 | 2017-07-01 00:00:00 |
| 0.00938889 | 2017-07-01 00:00:00 |
| 0.963191 | 2017-07-01 00:10:00 |
| NULL | 2017-07-01 00:10:00 |
| 0.290852 | 2017-07-01 00:15:00 |
| NULL | 2017-07-01 00:15:00 |
| 0.674658 | 2017-07-01 00:20:00 |
| NULL | 2017-07-01 00:20:00 |
| 0.483715 | 2017-07-01 00:30:00 |
| 0.426091 | 2017-07-01 00:30:00 |
| 0.394602 | 2017-07-01 00:40:00 |
| NULL | 2017-07-01 00:40:00 |
| 0.257901 | 2017-07-01 00:45:00 |
| NULL | 2017-07-01 00:45:00 |
| 0.521865 | 2017-07-01 00:50:00 |
| NULL | 2017-07-01 00:50:00 |
| 0.425519 | 2017-07-01 01:00:00 |
| 0.0112322 | 2017-07-01 01:00:00 |
+------------+---------------------+
18 rows in set (0.00 sec)
は運でこれを達成するために結合します。
ご協力いただければ幸いです。ありがとう。
あなたはタイムスタンプとの両方の値を持つ2つのcolumsで1行のみを持っていた場合tableoneとtabletwoそれはあなたの問題を解決するだろうか? – carla