webForumDet fria alternativet
Logga in / Bli medlem

Flytta data (komplext)

Databaser & SQL

2 svar · 302 visningar · startad av Gein

Medlem sedan sep. 20005 700 inlägg
Trådstart#1

Följande tabeller finnes:

Debit(number, sdate, employee, account)
Sale(Debit, item, quantity)
Item(number, price)

Data ska flyttas till:
Transact(number, date, employee, account, amount)

Data ska flyttas från Debit till Transact men sen ska dessutom amount beräknas och föras in. Amount fås genom att för varje debit-nummer (i Debit), hämta varje item som tillhör detta debit-nummer (genom att titta i Sale), kolla vad denna item kostar (i item-tabellen), multiplicera med quantity (från sale) och sedan summera alla dessa värden till ett amount.

Ganska komplext, vi har försökt få in detta i en enda INSERT men det blir väldiga problem, frågan är om det ens är möjligt?
Om ja: Hur ser en sådan fråga ut? Om nej: Vad är bästa sättet att lösa det på?

Medlem sedan juni 200032 967 inlägg
#2

Det borde gå att göra något sånt härnt:

INSERT INTO Transact (number, date, employee, account, amount)
SELECT d.number, d.sdate, d.employee, d.account, sum(s.quantity * i.price) as amount
FROM Debit as d
INNER JOIN Sale AS s ON d.number = s.debit
INNER JOIN Item AS i ON s.item = i.number
GROUP BY d.number, d.sdate, d.employee, d.account

mvh

Medlem sedan sep. 20005 700 inlägg
#3

Javisst fungerade det! Tackar!

255 ms totalt · 4 externa anrop · v20260731065814-full.51f67c91
121 ms — deklarationer (db)
0 ms — hämta statistik (cache)
125 ms — hämta tråd, inlägg och bilagor (db)
127 ms — ändringar (db)