SQL Tabellenupdaten mittels Select

em.tie

Cadet 1st Year
Registriert
Nov. 2006
Beiträge
13
Hallo Zusammen,

ich stehe gerade bei einem Update Statement für eine SQL Server 2005 etwas auf dem Schlauch. Ich habe eine Tabelle (tbl1) in der pro Tag und Kalenderwoche 3 Einträge stehen und das Feld Bezeichnung 2 leer ist

KW Tag hlp Bezeichnung1 Bezeichnung2
51 1 1 test null
51 1 2 testjkdfk null
51 1 3 test null
51 2 1 test null
51 2 2 testjkdfk null
51 2 3 test null
51 3 1 test null
51 3 2 testjkdfk null
51 3 3 test null

und ich habe eine weitere Tabelle (tbl2)

KW Tag id Bezeichnung
51 1 699 test1
51 1 700 test2
51 1 701 test3
51 2 699 test4
51 2 700 testjk
51 2 701 test243
51 3 699 testfdsa
51 3 700 testjkdfk
51 3 701 test

Jetzt möchte ich gerne die tbl1.Bezeichnung2 updaten und zwar wo KW und Tag gleich sind und hlp=1 und id=699 bzw. hlp=2 und id=700 und hlp=3 und id =701. Kann mir jemand mit dem Update helfen???

Vielen Dank.
 
Ich habs nicht getestet oder nachgebaut, aber du wirst mehrere Update Statements brauchen, müsste aber so in etwa funktionieren:


Code:
--Update für hlp1
update tbl1 t1
set Bezeichnung2=(select Bezeichnung 
                               from tbl2 t2
                               where t1.KW = t2.KW
                               and t1.Tag=t2.Tag
                               and id=699)
where t1.KW = t2.KW
and t1.Tag=t2.Tag
and hlp=1

-Update für hlp2
[...]

Bevor dir was zerlegst am besten vorher die Tabelle tbl1 sichern (Select * into tbl1bak from tbl1)
 
schnellschuss

Code:
update tabelle1
set Bezeichnung2 = tbl2.Bezeichnung
from tabelle1 as tbl1

/* join tbl2 */
inner join tabelle2 as tbl2
on tbl1.KW = tbl2.KW
and tbl1.Tag = tbl2.Tag

/* map 699/700/701(else) to 1/2/3 */
and 
(
case tbl1.hlp
  when 1 then 699
  when 2 then 700
  /* when 3 then 701 <- für weitere mappings */
         else 701
end
) = tbl2.id
 
Zuletzt bearbeitet:
Zurück
Oben