Kombinieren zweier Tabellen mit unterschiedlichen Spalten

Lukas2016

Benutzer
Beiträge
7
Hallo zusammen,

ich bräuchte bitte Hilfe bei folgender Herausforderung. Ich würde gerne zwei Tabellen mit teils identischen und unterschiedlichen Spaltennamen zusammenführen. Die Spalten sind hier jedoch sehr variabel, sodass kein standardisiertes Spaltenset definiert werden kann.

der Befehl:

Select * From a
union all
Select * from b

funktioniert dementsprechend nicht.

Beispiel:

upload_2017-5-4_18-6-53.png

Lässt sich das irgendwie bewerkstelligen?

Schonmal vielen Dank im Voraus!

Gruß
 
Werbung:
Ja. Mit leeren Tabellen ...

Code:
test=*# \d t1;
  Tabelle »public.t1«
 Spalte |  Typ  | Attribute
--------+---------+-----------
 datum  | date  |
 m  | integer |

test=*# \d t2;
  Tabelle »public.t2«
 Spalte |  Typ  | Attribute
--------+---------+-----------
 datum  | date  |
 m  | integer |
 n  | text  |

test=*# select 'tabelle1' as quelle, datum, m, NULL as neue_spalte from t1 union select 'tabelle2', datum, m, n from t2;
 quelle | datum | m | neue_spalte
--------+-------+---+-------------
(0 Zeilen)

test=*#

würde aber auch gehen, wenn da was drinne wäre, bin nur zu faul grad...
 
Werbung:
Ich glaube so wie Lukas das gern hätte funktioniert es nicht. Du musst schon die Spaltennamen nennen und in der richtigen Reihenfolge. Natürlich kann man mit NULL AS fehlende_spalte und 'Tabellenname' AS tabellenname auch in die Zieltabelle schreiben aber man muss schon explizit angeben und kann nicht einfach ein * da rein knallen.

Automatisiert könnte man das mit dynamischem SQL aber da ist der Aufwand enorm.
 
Zurück
Oben