Alias für einen Block vergeben

derhenry

Fleissiger Benutzer
Beiträge
54
Hallo zusammen,

ich lasse durch ein Excel-Addin SQL Code generieren und gegen eine MS SQL-DB ausführen.
Der Code ist eigentlich recht simpel und joint zwei Tabellen. Diesen gebe ich die Aliase a und b. Das Makro setzt dieses a und b richtig als Präfix der Spaltennamen und hinter die Tabellenbezeichnung. Alles super. Aber: Die letzte Zeile ist die Where-Bedingung und diese ist ein Freitext des Anwenders. Dort kann beispielsweise "id=5 and stand=15" stehen. Die Bedingung gilt immer Für Tabelle a.

Im Makro kann ich diesen Text nun schlecht nach Spaltenbezeichnungen durchsuchen und ein "a." davor setzen. Auch können dort beliebig viele (oder auch keine) Filterkriterien stehen und der Anwender wird das "a." wahrscheinlich nicht selber setzen.

Gibt es eine Möglichkeit, dem SQL-Server auf andere Art zu sagen, dass alles was in einem bestimmten Block kommt für a gilt?

Danke und Grüße
derhenry
 
Werbung:
Also mal abgesehen von dem obligatorischen Hinweis auf SQL-Injection und das Sicherheitsproblem das mit diesem Vorgehen einhergeht ginge das wohl. Du könntest dein Statement z.B. schachteln:
Code:
SELECT *
FROM (

SELECT *
FROM tabelle1
WHERE <dein_code>

) a
LEFT JOIN tabelle2 b
ON a.pk = b.fk
 
Hallo ukulele,
super, Du meinst so:
Code:
SELECT *
  FROM (SELECT id, spalte1, spalte2
          FROM tabelleA
         WHERE id = 5 AND stand = 15) a
       LEFT JOIN tabelleB b ON a.id = b.id
Das sieht doch ganz gut aus.
Was meinst Du einleitend mit einem Sicherheitsproblem?
 
Werbung:
An der Stelle würde es nur für einen SQL-Fehler sorgen, oder?
Außerdem hat der Windows-USer nur sehr beschränkte Rechte und kann keine Tabellen löschen/leeren/anlegen.
Aber danke für den Hinweis!
 
Zurück
Oben