Discussion:
Unterabfrage im INSERT INTO
(zu alt für eine Antwort)
Kai Gillmann
2003-12-14 19:49:11 UTC
Permalink
Hi.
Ich möchte einen neuen Eintrag in eine Usertabelle erstellen. Einer der
Startwerte die dort eingetragen werden wird aus einer anderen Tabelle
bezogen, die alle Einstellungen des Projektes beinhalten.

--> Unterabfragen sind in diesem Kontext unzulässig. Nur Skalarausdrücke
sind zulässig.

Es sieht in etwa so aus:

INSERT INTO Accounts(Acc, Pass, MDate, First)
VALUES ('Test', 'Pass', GETDATE(), (SELECT Wert FROM Settings WHERE
Einstellung = 'FirstValue'))

Kann mir jemand sagen wie ich dies erledige ohne Variablen zu verwenden?

THX

Kai
Stefan Falz [MVP]
2003-12-14 20:03:07 UTC
Permalink
Hallo Kai,
Post by Kai Gillmann
INSERT INTO Accounts(Acc, Pass, MDate, First)
VALUES ('Test', 'Pass', GETDATE(), (SELECT Wert FROM Settings WHERE
Einstellung = 'FirstValue'))
Versuchs mal so:

INSERT INTO Accounts (Acc, Pass, MDate, First)
SELECT 'Test', 'Pass', GETDATE(), Wert FROM Settings WHERE Einstellung = 'FirstValue'

(Zeilenumbruch nur wegen der Lesbarkeit)
--
Tschau, Stefan
MS MVP für ASP / ASP.Net
http://aspnet.codebooks.de/ - Das ASP.Net Codebook (VB.Net)
http://asp.codebooks.de/ - Das ASP Codebook
http://www.aspfaq.de/ - Active Server Pages FAQ
Kai Gillmann
2003-12-14 20:20:16 UTC
Permalink
Post by Stefan Falz [MVP]
Post by Kai Gillmann
INSERT INTO Accounts(Acc, Pass, MDate, First)
VALUES ('Test', 'Pass', GETDATE(), (SELECT Wert FROM Settings WHERE
Einstellung = 'FirstValue'))
INSERT INTO Accounts (Acc, Pass, MDate, First)
SELECT 'Test', 'Pass', GETDATE(), Wert FROM Settings WHERE Einstellung = 'FirstValue'
Ich verstehe das so, dass bei einer SELECT Abfrage eine Spalte in '' direkt
als Text wiedergegeben wird?

Kai
Stefan Falz [MVP]
2003-12-14 20:30:29 UTC
Permalink
Hallo Kai,
Post by Kai Gillmann
Ich verstehe das so, dass bei einer SELECT Abfrage eine Spalte in '' direkt
als Text wiedergegeben wird?
Yep. Genau das.
--
Tschau, Stefan
MS MVP für ASP / ASP.Net
http://aspnet.codebooks.de/ - Das ASP.Net Codebook (VB.Net)
http://asp.codebooks.de/ - Das ASP Codebook
http://www.aspfaq.de/ - Active Server Pages FAQ
Kai Gillmann
2003-12-14 20:43:34 UTC
Permalink
Post by Stefan Falz [MVP]
Hallo Kai,
Post by Kai Gillmann
Ich verstehe das so, dass bei einer SELECT Abfrage eine Spalte in '' direkt
als Text wiedergegeben wird?
Yep. Genau das.
Danke schön :-)

Markus Broy
2003-12-14 20:21:12 UTC
Permalink
Hallo Kai,

wenn Du keine Variablen einsetzen willst und derartige Unterabfragen nicht
möglich sind (dies hängt z. T. von der Datenbank ab - die ein oder andere DB
erlaubt Unterabfragen, die ggf. eine andere nicht unterstützt), bleibt Dir
nur eine Lösung per SQL.

Dies kann wie folgt aussehen (ich bin jetzt davon ausgegangen, dass Du einen
SQL Server einsetzt):

Dim strSQL = "DECLARE @Wert INT" & _
"SET @Wert = (SELECT Wert FROM Settings WHERE Einstellung = 'FirstValue') "
& _
"INSERT INTO Accounts(Acc, Pass, MDate, First) " & _
"VALUES ('Test', 'Pass', GETDATE(), @Wert)"

Cmd.CommandText = strSQL
Cmd.ExecuteNonQuery()


Ich denke, dass dürfte das Eleganteste sein.

Gruß

Markus Broy
Post by Kai Gillmann
Hi.
Ich möchte einen neuen Eintrag in eine Usertabelle erstellen. Einer der
Startwerte die dort eingetragen werden wird aus einer anderen Tabelle
bezogen, die alle Einstellungen des Projektes beinhalten.
--> Unterabfragen sind in diesem Kontext unzulässig. Nur Skalarausdrücke
sind zulässig.
INSERT INTO Accounts(Acc, Pass, MDate, First)
VALUES ('Test', 'Pass', GETDATE(), (SELECT Wert FROM Settings WHERE
Einstellung = 'FirstValue'))
Kann mir jemand sagen wie ich dies erledige ohne Variablen zu verwenden?
THX
Kai
Loading...