Ich möchte UNION Tabellen mit identischen Spalten, zB:MySQL UNION Tabellen, die von einem einzigen eindeutigen Feld
table1
id var1 var2
1 green red
2 blue NULL
table2
id var1 var2
2 NULL pink
3 red blue
Mein Ergebnis so aussehen sollte:
id var1 var2
1 green red
2 blue pink
3 red blue
Ein „normaler“ UNION das schafft folgendes Ergebnis:
... mit zwei id = 2 Einträgen, da die zwei Zeilen mit id = 2 nicht identisch sind. Allerdings würde ich nur eine einzige Zeile mit der ID 2.
Meine aktuelle Problemumgehung haben, wie sich wie folgt:
Schritt 1
CREATE OR REPLACE VIEW temp AS
SELECT id FROM table1
UNION
SELECT id FROM table2;
Schritt 2
SELECT t1.id, IFNULL(t2.var1, t3.var1) AS var1, IFNULL(t2.var2, t3.var2) AS var2
FROM temp AS t1
LEFT JOIN table1 AS t2 ON t1.id = t2.id
LEFT JOIN table2 AS t3 ON t1.id = t3.id;
Ich kann nicht glauben, dass dies der klügste Weg ist, um das Problem zu lösen, da es so ein gemeinsames o ist ne. Und es ist ein echter Schmerz im Nacken, wenn die Anzahl der Tabellen oder Variablen zunimmt.
Danke für jede kluge Idee!
Vielen Dank! Leider kombiniert diese Lösung die Felder nicht. id 2 hat nur die Informationen in Tabelle1 gefunden. –