1. Diese Seite verwendet Cookies. Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies. Weitere Informationen
  2. Willkommen im Forum für alle Datenbanken! Registriere Dich kostenlos und diskutiere über DBs wie Mysql, Oracle, Sql-Server, Postgres, Access uvm
    Information ausblenden

Dynamische View (Ansicht)

Dieses Thema im Forum "Microsoft SQL Server" wurde erstellt von Squicky, 31 August 2010.

  1. Squicky

    Squicky Neuer Benutzer

    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
     
  2. thomas_w

    thomas_w Datenbank-Guru

    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
     
Die Seite wird geladen...

Diese Seite empfehlen