För MS SQLServer.
update tabell1 t1 set Sald = Sald + coalesce(select antal from tabell2 t2 where t2.prodid = t1.id,0)
Databaser & SQLur Databashanterare & SQL
8 svar · 289 visningar · startad av ConnyFox
Ok detta vill jag göra.
Tabell 1 innehåller produkter samt ett fält sald
tabell 2 innehåller produkter samt ett fält antal och ett fällt prodID
jag vill med en update-fråga göra så att alla varorna i tabell 1 där ID stämmer överänns med prodID i tabell2 uppdateras så att sald blir sald+antal
Exempel :
Tabell 1
ID Sald
1 15
Tabell2
ProdID Antal
1 5
i detta fallet skall alltså sald i tabell 1 uppdateras till 20
hur gör jag detta?
För MS SQLServer.
update tabell1 t1 set Sald = Sald + coalesce(select antal from tabell2 t2 where t2.prodid = t1.id,0)
Hmm dum som jag är glömde jag skriva att det är MySQL jag använder :(
Ja du, då vågar jag inte riktigt ge mig på det. Jag har ingen aning ifall Coalesce finns i mySQL eller ifall man behöver paranteser runt subqueries.
Men, vi gör en wildchance;
update tabell1 t1 set Sald = Sald + (select antal from tabell2 t2 where t2.prodid = t1.id)
Visst, coalesce() finns i mySql.
Men subquerys stöds endast i 4.1 eller senare. ;)
I.s.f så får du först göra select-satsen som du aplicerar in med en variabel i din update.
Problemet med subqueries är ju att man behöver ha mysql 4.1 eller senare och dom flesta webhotell har inte det..
Jag använder visserligen SQL Server, men jag hade försökt ge mig på någonting sånt här:
UPDATE tabell1
SET Sald = t1.Sald + coalesce(t2.antal)
FROM tabell1 t1, tabell2 t2
WHERE t1.id = t2.prodid
Visserligen kan man ju läsa på mysql.com (det antar jag att du redan gjort):
Starting with MySQL 4.0.4, you can also perform UPDATE operations that cover multiple tables:
UPDATE items,month SET items.price=month.price
WHERE items.id=month.id;
mvh
har inte läst allt.. ;) ok men tack, skall testa det.