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-Key: 12262

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

Printed on: April 20, 2024 at 01:04 o'clock

Member: n.o.b.o.d.y
n.o.b.o.d.y Jun 23, 2005 at 11:13:59 (UTC)
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);
Member: Enne
Enne Jun 23, 2005 at 11:59:49 (UTC)
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
Member: mskf
mskf Jun 27, 2005 at 23:00:39 (UTC)
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 )
Member: cyrano330
cyrano330 Jul 18, 2005 at 08:06:23 (UTC)
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....
Member: MadMax
MadMax Jul 27, 2005 at 22:46:59 (UTC)
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