greenkeeper: subselect bei create view

Hallo, ich habe mal eine Frage bezüglich der Erstellung eines View.
Ich würde gerne die Spaltennamen im View aus einer externen Tabelle auslesen. Vorgestellt habe ich mir das in etwas so:

create view [View_auf_TabelleX] (select SpaltennameNeu from [Tabelle_mit_Spaltennamen]) as select * from [TabelleX]

Leider funktioniert das so nicht. Kann mir da jeand weiterhelfen? Danke.

Folgendermaßen soll das aussehen:

[TabelleX]:

NName | VName | Nummer
----------------------
Huber | Franz | 0001
Mai   | Olaf  | 0002
Frei  | Dirk  | 0003

[Tabelle_mit_Spaltennamen]:

SpaltennameAlt | SpaltennameNeu
-------------------------------
NName          | Nachname
VName          | Vorname
Nummer         | NR

[View_auf_TabelleX]:

Nachname | Vorname | NR
------------------------
Huber    | Franz   | 0001
Mai      | Olaf    | 0002
Frei     | Dirk    | 0003

  1. Mach das SELECT mit expliziten Namen statt *, also SELECT AltlastEins AS NeueIdeeA, AltlastZwei AS NeueIdeeB, AltlastDrei AS NeueIdeeC FROM tabelle WHERE bedingungen.

    Die Spaltenumbenennungstabelle funktioniert so nicht, Du kannst sie höchstens in einem externen Programm auslesen, um das o.g. SELECT-Statement zu erzeugen.

    Alexander

    1. Würde das denn mit einem Cursor funktionieren, mit deren Hilfe ich zwei Variablen befülle , die ich nachher mit einem EXECUTE ausführe?
      So in etwa:

      exec('create view as select ' + variable1 + ' as ' + variable2 + 'from Tabelle')

  2. echo $begrüßung;

    create view [View_auf_TabelleX] (select SpaltennameNeu from [Tabelle_mit_Spaltennamen]) as select * from [TabelleX]

    Zum einen muss ein Subquery immer eingeklammert werden (selbst wenn es als Parameter innerhalb von Funktionsklammern steht). Zum anderen solltest du dein Vorhaben zunächst mit einem normalen SELECT-Statement probieren. Das Handbuch erwähnt zwar nicht, dass der Alias-Bezeichner nur ein konstanter Wert sein darf, doch würde es mich wundern, wenn das nicht so wäre.

    echo "$verabschiedung $name";