0
に基づいて列にそれを表示:のMySQL:2テーブルを選択し、私はこのような私のテーブルルック持っ年
にtableA:
YEAR | GenerationA | TransmissionA
--------------------------------
2015 | 213 | null
2016 | 1122 | null
2016 | null | 5
2017 | null | 999
TABLEB:
YEAR | GenerationB | TransmissionB
--------------------------------
2014 | 111 | null
2016 | 534 | null
2016 | null | 4
2017 | null | 5
2017 | 555 | null
を表Aと表Bの両方で、データは生成列または送信列のいずれかに表示されますが、両方の列になることはできません。
たとえば、TableAの、2016年には、第一のデータは534の列の生成に表示され、2016年第2回データが値4 の列の伝送に表示されます、それの一部は、発電や送電
結果で一度表示されます
それは以下のような結果になるように私は、年に基づいて、この2テーブルに参加したいと思います:
YEAR | GenerationA | TransmissionA | GenerationB | TransmissionB
----------------------------------------------------------------------------------------
2014 | null | null | 111 | null
2015 | 213 | null | null | null
2016 | 1122 | 5 | 534 | 4
2017 | null | 999 | 555 | 5
のSchをEMA:
CREATE TABLE tableA
(
Year int(11),
GenerationA int(20),
TransmissionA int(20)
);
CREATE TABLE tableB
(
Year int(11),
GenerationB int(20),
TransmissionB int(20)
);
INSERT INTO tableA VALUES (2015,213,null);
INSERT INTO tableA VALUES (2016,1122,null);
INSERT INTO tableA VALUES (2016,null,5);
INSERT INTO tableA VALUES (2017,null,999);
INSERT INTO tableB VALUES (2014,111,null);
INSERT INTO tableB VALUES (2016,534,null);
INSERT INTO tableB VALUES (2016,null,4);
INSERT INTO tableB VALUES (2017,null,5);
INSERT INTO tableB VALUES (2017,555,null);
SQLアプローチ:
SELECT * FROM tableA
LEFT JOIN tableB ON tableA.YEAR = tableB.YEAR
GROUP BY tableA.YEAR
UNION
SELECT * FROM tableA
RIGHT JOIN tableB ON tableA.YEAR = tableB.YEAR
GROUP BY tableB.YEAR
は、SQLの上にしようとしたが、
iはsqlfiddleでそれを作成しようとしました、それはそうここにある、私にエラーを与え続けます結果を得ることができません。どんな助けもありがとう。あなたがunion all
とgroup by
でこれを行うことができます
はそのことを考えることはありません、どうもありがとうございました...脳が立ち往生:) – Teddybugs