Dynamische View (Ansicht)

Squicky

Neuer Benutzer
Beiträge
3
Hallo

Ich stehe vor einem etwas schwerem Problem: Es wir eine „dynamische“ View (Ansicht) gebraucht. (Eine View ist im Grunde eine abgespeicherte select Abfrage, die man beim Lesen wie eine Tabelle, ansprechen kann.)

In dieser select abfragen, sollen Ergebnisse von mehreren select Abfragen zusammengefasst werden.
Kein Problem: UNION ALL

Select name from tab1
UNION ALL
Select name from tab2
UNION ALL
Select name from tab2

Das dynamische aber ist, dass die Anzahl der Tabellen, aus der die Namen ausgelesen und zusammen gefasst werden sollen nicht immer gleich ist.

Es gibt eine Tabelle (TabIndex) mit den Spalten: TabID und TabName. Für das obige Beispiel, würde die TabIndex drei Datensätze haben mit den Spalteninhalten: tab1, tab2 und tab3.

Gearbeitet wird mit MS SQL Server 2008

Ich dachte, dass ich mir den eigentlichen select Befehl (z.B: „Select name from tab1“) in einen String („StrSQL“) zusammen baue, und diesen dann per „EXEC StrSQL“ ausführe.
Dies würde ich dann in einer Schleife (CURSON) machen und den Inahlt von TabIndex durchlaufen. Für jeden Datensatz bzw. für jeden TabName in TabIndex würde ich „EXEC ‘select name from ‘ & TabName “ machen. Aber wie fasse ich dann diese Rückgaben zusammen und lasse sie dann als eine große gemeinsame Rückgabe eines select bzw. View ausgeben?

Danke
 
Werbung:

thomas_w

SQL-Guru
Beiträge
104
AW: Dynamische View (Ansicht)

Irgendwie verstehe ich die Frage nicht ganz, denn eigentlich hast Du mit dem UNION ALL bereits selber die Lösung präsentiert:
  • a) SELECT TabID, TabName FROM tabIndex
  • b) In einer Schleife über das Ergebnis aus a) den SELECT 't1' AS quelle, name FROM tab1 UNION ALL SELECT 't2' AS quelle, name FROM tab2 ... dynamisch zusammenbauen
  • c) Den dynamisch zusammengebauten SQL-String ausführen
Den MS-SQL-Server kenne ich nicht, aber auch dort wird es so ähnlich funktionieren.

Grüße
Thomas
 
Oben