elisaMedlem sedan apr. 200432 inlägg
Hej!
Jag har problem med att formulera en sql-sats för att uppdatera en tabell med data från en annan tabell.
Det finns två olika tabeller som båda innehåller artikelregister, tabellerna har likadan struktur. Vi kan kalla tabellerna för ARTIKEL1 och ARTIKEL2.
Tabellen ARTIKEL2 ska uppdateras med data från ARTIKEL1.
Uppdateringen av tabellen ska ske enligt följande regel:
Om artikelnummer redan finns i ARTIKEL2 ska kolumnen "pris" uppdateras med värdet i ARTIKEL1.
Det bästa är om allt detta kan utföras med hjälp av en och samma sql-sats. Jag använder en Access-databas.
Följande uttryck fungerar i SQL-server (, men som sagt så använder jag Access.)
UPDATE ARTIKEL2 SET pris = ARTIKEL1.pris FROM ARTIKEL2, ARTIKEL1 WHERE ARTIKEL2.artnr = ARTIKEL1.artnr
Någon som har en idé?
//Elisabeth
LarsGMedlem sedan dec. 200012 465 inlägg
UPDATE ARTIKEL2
SET pris = (
select pris
from artikel1
where artikel1.artnr = artikel2.artnr
)
where artnr in (
select artnr
from artikel1
)
elisaMedlem sedan apr. 200432 inlägg
Tack för snabbt svar! Men när jag använder uttrycket får jag felmeddelandet "Operationen måste använda en fråga som kan uppdateras".
Vad kan det bero på?
//Elisa
@ndersMedlem sedan juni 200026 914 inlägg
Det brukar bero på att den som försöker köra frågan (exempelvis kontot IUSR_xxxx om man använder en webbapplikation för att exekvera frågor) inte har tillräckliga filsystemsrättigheter på mappen där databasen ligger.
Kör du detta från en webbsida eller hur exekverar du frågan?
LarsGMedlem sedan dec. 200012 465 inlägg
Det kan också vara en begränsning i Access. Det finns en alternativ syntax (som dock inte ingår i SQL-standarden)
UPDATE ARTIKEL2 inner join artikel1
on artikel1.artnr = artikel2.artnr
SET artikel2.pris = artikel1.pris