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
Gruß Enne
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
Gruß Enne
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 12262
Url: https://administrator.de/contentid/12262
Ausgedruckt am: 22.11.2024 um 17:11 Uhr
5 Kommentare
Neuester Kommentar
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);
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);
Hallo,
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 )
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);
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 )
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
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