Jag har... Tagit från huvudet, säkerligen med fel... Såhär långt har jag kommit nu i min sql-sats... Testade du mitt förslag? Varför har du inte Betalt och Tillgodo i samma tabell. Det är ju en Tillgodo med negativt värde. Du kan ju ha en flaga eller en attribut om du vil skilja dem åt. Som redan påpekats så ser designen lite skum ut, och namngivningen på FOREIGN KEY-kolumnerna tycker jag är konstig, men om jag tolkat dig korrekt så bör denna fråga lösa problemet:Knepig sql-sats!
Tabell Faktura:
Fakid FakBelopp
1 100
Tabell Betalt:
Betid BetBetalt
1 10
1 10
1 40
Tabell Tillgodo:
Tilid TilTillgodo
1 20
Ta fram alla fakturor med < 0 (alltså dom med skuld)
Faktura 1 är på 100 kr
Betalt är 60 kr
Tillgodo är 20 kr
Summa: skuld på -20 kr...
Mycket tacksam för hjälp, men det sista vill sig inte, se min sql-sats nedan..
/TackSv: Knepig sql-sats!
SELECT Fakid, SUM(Belopp) AS Skuld
FROM (SELECT Faktid FaktBelopp FROM Faktura UNION ALL SELECT Betid, 0-BetBetalt FROM Betalt UNION ALL SELECT Tilid, 0-Tillgodo FROM Tillgodo)
GROUP BY Fakid
HAVING SUM(Belopp) < 0
/JohanSv: Knepig sql-sats!
SELECT Faktura.fakid, Faktura.Fakbelopp, SUM(Betalt.belopp) betalt, SUM(Tillgodo) utb
FROM NamnInfo inner join
(Faktura left join Betalt on Betalt.Betid = Faktura.Fakid)
on Medlem.Medlemsnr = Faktura.Medlemsnr
inner join medl_utbetalningsunderlag on medl_utbetalningsunderlag.Tilid = Faktura.Fakid
WHERE Ort = 1
GROUP BY Faktura.Fakid,Faktura.Fakbelopp
Having ((Sum(Betalt.belopp) + Sum(Tillgodo))- Sum(Faktura.Avibelopp)) < - 19
Det som blir fel är att om det inte finns ngt i tillgodo tabellen så hittar han inte fakturan..tips?Sv: Knepig sql-sats!
Om du ska göra på ditt vis borde du använda en left join mot tillgodotabellen också samt ta hänsyn till nullvärden i having-satsen tror jag. *gissar vilt*
SELECT Faktura.fakid, Faktura.Fakbelopp, SUM(Betalt.belopp) betalt, SUM(Tillgodo) utb
FROM NamnInfo inner join
(Faktura left join Betalt on Betalt.Betid = Faktura.Fakid)
on Medlem.Medlemsnr = Faktura.Medlemsnr
<b>left</b> join medl_utbetalningsunderlag on medl_utbetalningsunderlag.Tilid = Faktura.Fakid
WHERE Ort = 1
GROUP BY Faktura.Fakid,Faktura.Fakbelopp
Having ((<b>IsNull(Sum(Betalt.belopp),0)</b> + <b>IsNull(Sum(Tillgodo),0))</b>- Sum(Faktura.Avibelopp)) < - 19
Vad gör tabellerna NamnInfo och Medlem där...? Känns inte som att detta kan fungera?
/JohanSv: Knepig sql-sats!
Sv: Knepig sql-sats!
<code>
SELECT Fakid, SUM(FakBelopp - BetBetalt - TilTillgodo) AS Skuld
FROM Faktura
INNER JOIN (SELECT Betid, SUM(BetBetalt) AS BetBetalt FROM Betalt GROUP BY Betid) a ON Fakid = Betid
INNER JOIN (SELECT Tilid, SUM(TilTillgodo) AS TilTillgodo FROM Tillgodo GROUP BY Tilid) b ON Fakid = Tilid
GROUP BY Fakid
HAVING SUM(FakBelopp - BetBetalt - TilTillgodo) > 0
</code>