webForumDet fria alternativet

Update och select

Databaser & SQLur Databashanterare & SQL

2 svar · 275 visningar · startad av aleborg

aleborgMedlem sedan jan. 20013 341 inlägg
#1

Jag har en tabell som innehåller bland annat dessa columner:

ID
InvoiceID
Total
Saldo
IsCredit
CreditsInvoice

i tabellen finns både fakturor(IsCredit=0, CreditsInvoice=0) och Kreditnotor(IsCredit=1,CreditsInvoice=InvoiceID)

Jag behöver uppdatera alla fakturors "Saldo" som där det finns en tillhörande kreditnota med Fakturans "Total"(positivt tal) minus Kreditnotans "Total"(negativt tal).

Men jag kan inte komma på hur Updaten ska se ut.
Databasen är MS SQL.

LarsGMedlem sedan dec. 200012 464 inlägg
#2
update t set
saldo = saldo - (
  select  sum(total)
   from invoices
where invoiceid = t.invoiceId 
 and IsCredit = 1)
from invoices as t
where exists (
  select  *
   from invoices
 where invoiceid = t.invoiceId
    and IsCredit = 1)

men jag har väl missförstått din tabelldesign. Det brukar alltid underlätta för förståelsen om du exemplifierar med datainnehåll och förväntat resultat.

aleborgMedlem sedan jan. 20013 341 inlägg
#3

Tack LarsG, jag tror att din kod funkar finfint som den alltid gör :e, problemet var att jag upptäckte efter att du hade svarat att jag var för snabb och kollade inte min kod ordentligt(stort projekt så man glömmer en del), "Saldo" fanns inte alls i tabellen utan joinades in i frågan som visade resultatet som jag hämtade ovanstående från :r

Så jag fick ta det den långa vägen och loopa ALLA fakturor i ekonomiprogrammet och jämföra dom med dom jag hade i min databas, det tog en stund...

136 ms totalt · 3 externa anrop · v20260731065814-full.29ac60f6
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
133 ms — hämta tråd, inlägg och bilagor (db)