enne
Goto Top

SELECT Anweisung mit UPDATE verknüpfen

Hallo zusammen,

habe mal wieder bischen mit meinem SQL-Server (MS SQL Server 9.0) zu kämpfen.
Ich möchte folgende Situation erreichen :

Eine Select Anweisung die mir passende Artikelnummern sucht. Hierfür benötige ich die folgende Abfrage, da die Kriterien in mehreren Tabellen enthalten sind.

SELECT dbo.VORGPOS.ARTIKEL AS Test
FROM dbo.VORGPOS , dbo.VORGANG , dbo.ARTIKEL
WHERE ((VORGPOS.ROWVORGANG = VORGANG.ROWVORGANG) AND (VORGANG.DATUMERF > '09.5.2005') AND ( ARTIKEL.ARTIKEL = dbo.VORGPOS.ARTIKEL) AND ARTIKEL.FIRMA = 99 AND ARTIKEL.ARTIKEL like '14006%')
GROUP BY VORGPOS.ARTIKEL

Nach der Abfrage möchte ich die Ergebnisse des SELECT in meinem UPDATE benutzen. Wie es unten mit dem ALias steht geht es leider nicht. Aber vielleicht anders ?

UPDATE dbo.ARTIKEL SET ARCHIVKZ =1
where ARTIKEL.ARTIKEL = Test

Oder muss ich mir kleines Programm dafür schreiben ?

Danke für eurer Hirnschmalz face-smile

Gruß Enne

Content-ID: 12262

Url: https://administrator.de/contentid/12262

Ausgedruckt am: 22.11.2024 um 17:11 Uhr

n.o.b.o.d.y
n.o.b.o.d.y 23.06.2005 um 13:13:59 Uhr
Goto Top
Kannst du nicht dein SELECT als SUBSELECT in ein UPDATE einbauen??

Nach diesem Schema:

UPDATE dbo.ARTIKEL SET ARCHIVKZ =1
where (SELECT dbo.VORGPOS.ARTIKEL AS Test
FROM dbo.VORGPOS , dbo.VORGANG , dbo.ARTIKEL
WHERE ((VORGPOS.ROWVORGANG = VORGANG.ROWVORGANG) AND (VORGANG.DATUMERF > '09.5.2005') AND ( ARTIKEL.ARTIKEL = dbo.VORGPOS.ARTIKEL) AND ARTIKEL.FIRMA = 99 AND ARTIKEL.ARTIKEL like '14006%')
GROUP BY VORGPOS.ARTIKEL);
Enne
Enne 23.06.2005 um 13:59:49 Uhr
Goto Top
hatte ich auch schon probiert. Allerdings mag er das nicht weil sich die Anweisungen auf verschiedene Tabellen beziehen ...

Aber Danke für die Hilfe.

Enne
mskf
mskf 28.06.2005 um 01:00:39 Uhr
Goto Top
Hallo,

Kannst du nicht dein SELECT als SUBSELECT in
ein UPDATE einbauen??

Nach diesem Schema:

UPDATE dbo.ARTIKEL SET ARCHIVKZ =1
where (SELECT dbo.VORGPOS.ARTIKEL AS Test
FROM dbo.VORGPOS , dbo.VORGANG ,
dbo.ARTIKEL
WHERE ((VORGPOS.ROWVORGANG =
VORGANG.ROWVORGANG) AND (VORGANG.DATUMERF
> '09.5.2005') AND ( ARTIKEL.ARTIKEL =
dbo.VORGPOS.ARTIKEL) AND ARTIKEL.FIRMA = 99
AND ARTIKEL.ARTIKEL like '14006%')
GROUP BY VORGPOS.ARTIKEL);

fehlt eigentlich nur noch der Vergleich
also

UPDATE dbo.ARTIKEL SET ARCHIVKZ =1
where ARTIKEL.ARTIKEL = (SELECT dbo.VORGPOS.ARTIKEL AS Test
FROM dbo.VORGPOS , dbo.VORGANG , dbo.ARTIKEL
WHERE ((VORGPOS.ROWVORGANG = VORGANG.ROWVORGANG) AND (VORGANG.DATUMERF > '09.5.2005') AND ( ARTIKEL.ARTIKEL = dbo.VORGPOS.ARTIKEL) AND ARTIKEL.FIRMA = 99 AND ARTIKEL.ARTIKEL like '14006%')
GROUP BY VORGPOS.ARTIKEL )
cyrano330
cyrano330 18.07.2005 um 10:06:23 Uhr
Goto Top
Feuerst Du das Statement aus dem Code (Applikation) ab oder hast Du eine stored_prcedure? Das Problem wird beim Sperrverhalten des SQL liegen....
MadMax
MadMax 28.07.2005 um 00:46:59 Uhr
Goto Top
Wahrscheinlich hast Du Dir mittlerweile einen Cursor definiert, ansonsten hast Du hier die Lösung, die FROM-Klausel:

UPDATE dbo.ARTIKEL SET ARCHIVKZ =1
FROM dbo.VORGPOS , dbo.VORGANG , dbo.ARTIKEL
WHERE ((VORGPOS.ROWVORGANG = VORGANG.ROWVORGANG) AND (VORGANG.DATUMERF > '09.5.2005') AND ( ARTIKEL.ARTIKEL = dbo.VORGPOS.ARTIKEL) AND ARTIKEL.FIRMA = 99 AND ARTIKEL.ARTIKEL like '14006%')

Aber Deine SQL-Server-Version finde ich interessant, die 9.0 kenne ich gar nicht face-wink