Fetstil Fetstil Kursiv Understrykning linje färgläggning tabellverk Punktlista Nummerlista Vänster Centrerat högerställt Utfyllt Länk Bild htmlmode
  • Forum & Blog
    • Forum - översikt
      • .Net
        • asp.net generellt
        • c#
        • vb.net
        • f#
        • silverlight
        • microsoft surface
        • visual studio .net
      • databaser
        • sql-server
        • databaser
        • access
        • mysql
      • mjukvara klient
        • datorer och komponenter
        • nätverk, lan/wan
        • operativsystem
        • programvaror
        • säkerhet, inställningar
        • windows server
        • allmänt
        • crystal reports
        • exchange/outlook
        • microsoft office
      • mjukvara server
        • active directory
        • biztalk
        • exchange
        • linux
        • sharepoint
        • webbservers
        • sql server
      • appar (win/mobil)
      • programspråk
        • c++
        • delphi
        • java
        • quick basic
        • visual basic
      • scripting
        • asp 3.0
        • flash actionscript
        • html css
        • javascript
        • php
        • regular expresssion
        • xml
      • spel och grafik
        • DirectX
        • Spel och grafik
      • ledning
        • Arkitektur
        • Systemutveckling
        • krav och test
        • projektledning
        • ledningsfrågor
      • vb-sektioner
        • activeX
        • windows api
        • elektronik
        • internet
        • komponenter
        • nätverk
        • operativsystem
      • övriga forum
        • arbete karriär
        • erbjuda uppdrag och tjänster
        • juridiska frågor
        • köp och sälj
        • matematik och fysik
        • intern information
        • skrivklåda
        • webb-operatörer
    • Posta inlägg i forumet
    • Chatta med andra
  • Konto
    • Medlemssida
    • Byta lösenord
    • Bli bonsumedlem
    • iMail
  • Material
    • Tips & tricks
    • Artiklar
    • Programarkiv
  • JOBB
  • Student
    • Studentlicenser
  • KONTAKT
    • Om pellesoft
    • Grundare
    • Kontakta oss
    • Annonsering
    • Partners
    • Felanmälan
  • Logga in

Hem / Forum översikt / inlägg

Posta nytt inlägg


update på flera rader

Postades av 2009-07-27 01:01:12 - Stefan Johansson, i forum databaser, Tråden har 6 Kommentarer och lästs av 5493 personer

tjena!

en fundering. jag håller på med en webshop och nu vill jag uppdatera lagerantal efter köp. normalt hade jag gjort detta med en trigger men mitt webhotell vill ännu inte tillåta triggers på deras mysql servrar...

vad som köpts får jag från min tabell orderitems tabell enligt:
select variantguid, quantity from orderitems where orderguid=x

nu vill jag uppdatera flera rader i en tabell med en enda sql sats men där where satsen skiljer sig enligt:

update variant set stockcount=stockcount-a where variantguid=b
update variant set stockcount=stockcount-c where variantguid=d
.
.
.
osv

men alltså endast en update sats i stil med (ser väldigt skum ut ja...):
update variant set stockcount=stockcount-? where variantguid = (select variantguid, quantity ? from orderitems where orderguid=x)

är detta möjligt? servern kör i detta fall mysql. om inte, hur löser man detta enklast?

/mvh stefan



Svara

Sv: update på flera rader

Postades av 2009-07-27 08:08:26 - Johan Djupmarker

Varför måste du göra det i en enda sats? Tror inte det går, men det är nog mer beroende på hur du ansluter till MySQL. Jag skulle lagt all lagerförändring och orderläggning i en transaktion för att inte riskera felaktigt lagersaldo vid ett ev. fel.

/Johan


Svara

Sv:update på flera rader

Postades av 2009-07-27 15:27:00 - Stefan Johansson

Hej,

Allt körs i en transaktion :)

Nej jag måste inte, jag bara undrar om det är möjligt? Med tanke på att jag googlat en hel del verkar det ju inte så....

/stefan


Svara

Sv: update på flera rader

Postades av 2009-07-27 16:17:24 - Oskar Johansson

Det borde gå med en stored procedure? Typ loopa igenom resultaten ur selectsatsen och sedan köra update. Blir ju bara ett anrop mot servern då


Svara

Sv: update på flera rader

Postades av 2009-07-27 21:35:39 - Andreas Hillqvist

Detta borde väl gå?

UPDATE variant INNER JOIN orderitems ON variant.variantguid = orderitems.variantguid
SET variant.stockcount = variant.stockcount - orderitems.quantity 
WHERE orderitems.orderguid = x

Eller:
UPDATE variant, orderitems 
SET variant.stockcount = variant.stockcount - orderitems.quantity 
WHERE variant.variantguid = orderitems.variantguid AND orderitems.orderguid = x


Svara

Sv: update på flera rader

Postades av 2009-07-27 22:17:58 - Thomas Vanhaniemi

En riktig fullösning:
<code>
UPDATE variant SET stockcount = stockcount - CASE variantguid WHEN b THEN a WHEN d THEN c ELSE 0 END WHERE variantguid IN (b, d)
</code>

Ett annat alternativ är att designa om så att du aldrig uppdaterar värden, bara "on the fly" räknar ut lagersaldo genom att summera "inkommande tabellen" och subtrahera summan av en "utgående tabell".


Svara

Sv:update på flera rader

Postades av 2009-07-29 23:38:43 - Stefan Johansson

tack andreas, kör på din första variant!

tack för hjälpen alla
/stefan


Svara

Nyligen

  • 18:42 Hvor finder man håndlavede lamper
  • 18:41 Hvor finder man håndlavede lamper
  • 16:36 Allt du behöver veta om keramiskt
  • 16:14 Vem anlitar man egentligen när tak
  • 16:14 Vem anlitar man egentligen när tak
  • 16:13 Vem anlitar man egentligen när tak
  • 11:52 Noen erfaring med uttak hos Mostbe
  • 11:51 Noen erfaring med uttak hos Mostbe

Sidor

  • Hem
  • Bli bonusmedlem
  • Läs artiklar
  • Chatta med andra
  • Sök och erbjud jobb
  • Kontakta oss
  • Studentlicenser
  • Skriv en artikel

Statistik

Antal besökare:
Antal medlemmar:
Antal inlägg:
Online:
På chatten:
4 570 572
27 958
271 741
5 963
0

Kontakta oss

Frågor runt konsultation, rådgivning, uppdrag, rekrytering, annonsering och övriga ärenden. Ring: 0730-88 22 24 | pelle@pellesoft.se

© 1986-2013 PelleSoft AB. Last Build 4.1.7169.18070 (2019-08-18 10:02:21) 4.0.30319.42000
  • Om
  • Kontakta
  • Regler
  • Cookies