MySQL - Uppdatera flera rader
Jag försöker att uppdatera en tabell på flera rader samtidigt med ett anrop.
Tabellen som ska uppdateras heter RawStock och innehåller name och amount.
De andra 2 tabellerna som kan vara relevanta är:
Product(ProductName)
Recipie(ProductName, name, amountUsed)
Här ska amount i rawstock minskas med den mängd som passar ihop med recepie.
alltså t.ex.:
Product: Apelsin
Recipie: (Apelsin, Skal, 3), (Apelsin, kött, 4)
RawStock(Skal, 10), (Kött, 100)
Då ska det tas bort från rawstock så skal bara har 7 kvar och kött har 96 kvar.
Den sats jag skrivit nu är:
update RawStock where Name = (select name from Recipie natural join Product where productname = Apelsin) set amount = (amount - (select amount from name from recipie natural join productname ))
men detta verkar inte vara rätt
Du borde kunna lista ut hur det ska fungera för dig, fråga annars igen.
Att google fungerar precis like bra som att fråga här. Första svaret på google för "sql update several rows" ger svaret:
UPDATE config t1 JOIN config t2
ON t1.config_name = 'name1' AND t2.config_name = 'name2'
SET t1.config_value = 'value',
t2.config_value = 'value2';
Lite oklart vad du är ute efter i slutändan, men vad jag förstår så kommer du vilja hålla något slags lager i RawStock och i Recipe ska du fylla på med rader med vad som går åt för ett visst recept. Dessa rader behöver du då först summera innan du drar av dem i RawStock om det skulle kunna förekomma flera rader av samma typ.
Update rs
SET rs.amount = rs.amount - x.amountUsed
from (
select r.Name, sum(r.amountUsed) as amountUsed
from Recipe r
group by r.Name
) as x
inner join RawStock rs on rs.Name = r.Name
Ovan kommer minska Rawstock med de antal som finns specificerade för varje typ (Skal, Kött)
Känns onödigt att ens joina in tabellen Product då den bara innehåller ProductName. I en bra databas bör du istället joina på ID-kolumner av typ integer som är satta till primary eller foreign keys istället för att joina på en textsträng.
Själva strukturen känns lite stökig. Kolumnen Recipe borde kanske heta RecipeComponents och innehålla ett RecipeID som går via en foreign key till en maintabell för själva receptet där namn på receptet, beskrivning, etc finns.
Lycka till!
- Igår Intel skyller Raptor Lake-krascher på moderkortstillverkare 28
- Igår TSMC utvecklar enorma kretsar med effekt mätt i kilowatt 11
- Igår Så mycket långsammare blir Intels värstingkretsar med ”Intel Baseline” i BIOS 52
- 26 / 4 Corsair Platform 6: För dig som inte nöjer dig med Ikea-skrivbord 11
- 26 / 4 Rykte: Switch 2 släpps i höst – OLED-variant dröjer 51
- 27 / 4 Stöd för komprimering i fler format på gång till Windows 19
- 27 / 4 Krönika: "Early access" är utstuderad girighet 47
- 27 / 4 Microsoft släpper källkoden till MS‑DOS 4.00 20
- 26 / 4 Ny caps lock-symbol i Windows förbryllar HP-användare 21
- 26 / 4 Därför blockerar Windows 11 24H2 Start‑menyhack 43
- Igår Google nöjda med annonsexperiment: Youtube kan få pausreklam 32
- 27 / 4 Övergivet skadeprogram infekterar miljontals maskiner 17
- 27 / 4 Helgsnack: Är all reklam till ondo? 85
- 26 / 4 NetonNet varnar om läckta kunduppgifter 23
- 26 / 4 Premiär på SweClockers! Månadens drop med gamingskärm hos Elgiganten 74
- bluescreen mm0
- Veckans fråga: Hur mycket lagringsutrymme har din dator?116
- Visa dina spelvideor5
- Google nöjda med annonsexperiment: Youtube kan få pausreklam32
- Escape from Tarkov393
- Intel skyller Raptor Lake-krascher på moderkortstillverkare28
- Senaste klarade spel?674
- Analys av HDR samt WCG (Nördvarning)112
- Samsung Galaxy Watch 35
- ECC Minnen till Fujitsu primergy tx1320 m346
- Säljes 4070 TI i5 13400f Dator
- Säljes ASUS ROG Strix 3080 10GB White
- Säljes CoD MW3 ps5 inkl lockpick, Noctua NH-U12S AM4, DAC och HDD
- Säljes Elgato Wave 3 mikrofon
- Säljes TC-Helicon GoXLR Mini
- Säljes Komplett dator, 2700x, GTX 1070
- Säljes Vårstädning - i5-6600, GA-H170N-WIFI, 2x8GB DDR4, GTX 760, Noctua NH-U12S, FD Tesla 650W
- Köpes Uppgraderingspaket am4/am5/lga1700, ssd, gpu
- Säljes Flertal sata SSD'er 480GB-2TB
- Säljes Playstation 5 Digital 825gb
- Google nöjda med annonsexperiment: Youtube kan få pausreklam32
- Intel skyller Raptor Lake-krascher på moderkortstillverkare28
- TSMC utvecklar enorma kretsar med effekt mätt i kilowatt11
- Så mycket långsammare blir Intels värstingkretsar med ”Intel Baseline” i BIOS52
- Stöd för komprimering i fler format på gång till Windows19
- Krönika: "Early access" är utstuderad girighet47
- Övergivet skadeprogram infekterar miljontals maskiner17
- Helgsnack: Är all reklam till ondo?85
- Microsoft släpper källkoden till MS‑DOS 4.0020
- Ny caps lock-symbol i Windows förbryllar HP-användare21
Externa nyheter
Spelnyheter från FZ
- Dragon’s Dogma 2 har sålt så bra att Capcom betalar ut mer pengar till aktieägarna igår
- Silent Hill 2 – Snart avslöjas släppdatum och till vilka plattformar det släpps igår
- River City Girls 2 gästas av Double Dragon i sommar igår
- Sand Land delar en sista hälsning från Akira Toriyama 27/04
- Alien: Rogue Incursion släpps till VR senare i år 27/04