UNION von ungleichen Tabellen

Mr. Robot

Fleissiger Benutzer
Beiträge
88
Hallo Zusammen,

Ich möchte gerne zwei Tabellen miteinander UNION auch wenn Sie unterschiedliche Anzahl von Spalten haben, indem ich die längere Spaltenüberschrift von beiden nehme.

Die Anzahl der Spalten könnte ich über die [INFORMATION_SCHEMA].[COLUMNS] mit COUNT(*) ermitteln. Ich habe schon eine CASE WHEN oder TRY CATCH Abfrage versucht... aber diese brechen sofort ab
wenn die Spalten nicht anzahltechnisch zusammen passen. Habt Ihr noch weitere Ansatzideen? :confused:

Beispiel:

BEGIN TRY
(SELECT * FROM [SCHEMA].[TABELLE1] UNION ALL SELECT * FROM [SCHEMA].[TABELLE2])
END TRY
BEGIN CATCH
print 'ERROR'
END CATCH

Hier kommt zum Beispiel der Error Fall erst garnicht durch.
 
Werbung:
Bei solchen Fragen stellt sich mir die Frage: warum will man das? Die eine Tabelle möge Bananen enthalten, die andere Schiffsanker. Man kann nun schwerlich das eine als Ersatz für das andere nehmen. Wozu also Bananen und Schiffsanker in ein gemeinsames Resultset stecken?
 
Sie sind an sich gleich. Für den Fall das die eine Bananen und Schiffsanker enthalten und die andere nur Schiffsanker sollen die Schiffsanker ergänzt werden ;)
 
Code:
test=*# select 'Banane' as "ach, Scheißegal" union all (select 'Schiffsanker');
 ach, Scheißegal
-----------------
 Banane
 Schiffsanker
(2 rows)

test=*#


So?
 
Hm... verstehe ich nicht ganz. Eine Tabelle A mit a Spalten will ich mit Tabelle B mit b Spalten UNION wobei a Teilmenge aus b ist.

Für gewöhnlich ist ja für ein UNION Befehl a = b Voraussetzung.
 
Werbung:
Du wirst an den Select mit weniger Spalten welche anhängen müssen. Es reichen NULL Werte, handelt es sich allerdings um den ersten Select, dann müssen die Spalten glaube ich auch Namen haben.
Code:
SELECT spalte1,NULL AS spalte2 FROM tabelle1 UNION ALL SELECT spalte1,spalte2 FROM tabelle2
 
Zurück
Oben