[MS SQL] Update: Spalte eine Table Updaten mit Ergebnis aus Sub-Select

SYS83

Mitglied
Hallo,

Ich habe hier ein kleines Problem einer Update-Query. Ich bekomme die Meldung
Code:
"Das Spaltenpräfix 'reisen' stimmt mit keinem in der Abfrage verwendeten Tabellen- 
oder Aliasnamen überein."
Das kann ich mir aber nicht erklären.

Zur Situation:
  1. Es gibt eine Tabelle "Reisen" mit den Feldern "RefNr" und "FreigabeDurch"
  2. Es gibt eine View "vwFreigebender", welche mir aus einer anderen umfangreichen Tabelle liefert welcher User welche RefNr zu welchem Zeitpunkt freigegeben hat. D.h. das Resultset liefert Datum, RefNr und UserId sortiert nach RefNr ASC und Datum DESC.
  3. Die Reisen-Tabelle und die View liegen in der gleichen Datenbank.

Mit der Update-Query möchte ich jetzt die UserId den letzten Freigebenden in die Reisen-Tabelle übernehmen, wo in der Reisen-Tabelle das Feld "RefNr" nicht NULL ist.

Meine Query sieht so aus:
Code:
update DB.dbo.reisen set freigabedurch =
(select top 1 UserID from DB.dbo.vwFreigebender where refnr=reisen.refnr) 
where  refnr is not null

Jetzt bekomme ich oben stehende Meldung. Wo ist hier mein Fehler?
 
Hab zwar keine Auhnung von MS SQL, aber

Er kennt in 'where refnr=reisen.refnr' den alias reisen nicht. In anderen SQL-Sprachen kannst du das entweder über Aliase oder über JOIN lösen.
SQL:
update DB.dbo.reisen AS reisen set freigabedurch =
(select top 1 UserID from DB.dbo.vwFreigebender where refnr=reisen.refnr) 
where  refnr is not null
 
Zuletzt bearbeitet von einem Moderator:
SQL:
update DB.dbo.reisen AS reisen set freigabedurch =
(select top 1 UserID from DB.dbo.vwFreigebender where refnr=reisen.refnr) 
where  refnr is not null

Danke Yaslaw,

aber das habe ich auch schon versucht, da kriege ich aber noch mehr nervige Meldungen:
Code:
Falsche Syntax in der Nähe des as-Schlüsselwortes.
Falsche Syntax in der Nähe des where-Schlüsselwortes.

Sieht so aus, als mag MS SQL bei Updates nicht mit Aliasen arbeiten. :(
Ich würd das nur gern über eine einzige Aktion lösen, denn es sind Unmengen an Zeilen die einmalig upgedatet werden müssen.
 
Zuletzt bearbeitet von einem Moderator:
Zurück