Lidt hjælp til en sql forespørgsel

Tags:    databaser

Hvis jeg har en tabel med følgende felter og værdier
til | fra | beløb
---------------------------------------
a | b | 100
a | b | 50
c | a | 20



Og jeg gerne vil vil finde ud af hvor mange penge a, har tilrådighed (100+50-20=130), hvordan skal jeg så lave mit kald?

Det jeg indtil videre selv er nået frem til er;

SELECT SUM(tbl1.beløb) AS sum FROM tabel AS tbl1 WHERE tbl1.til='a'
UNION
SELECT SUM(tbl2.beløb) AS sum FROM tabel AS tbl2 WHERE tbl2.fra='a'

Dette giver mig resultatet

sum
------
20
150

Men hvad skal jeg gøre, hvis jeg blot ønsker at få returneret ét svar, nemlig

sum
-----
130

Jeg er virkelig i vildrede - synes efterhånden at have prøvet alting, men det her er det tætteste jeg kommer.

På forhånd tak.



2 svar postet i denne tråd vises herunder
2 indlæg har modtaget i alt 6 karma
Sorter efter stemmer Sorter efter dato
Altså det jeg tænker på er mere at hente alle til hvor der står a og så plus deres beløb sammen.
Derefter ville jeg hente alle fra hvor der står b og så minus deres beløb med tallet fra før.

Der findes sikkert en metode hvor du kan lave det på bare en forespørgsel. Men det er vært fald en logisk metode når man ikke ved andet

Eller du har jo allerede lave to gode forespørgsler (hvis du fjerner UNION). Resultaterne af de to kan jo bare minusses.



hvad med?

SELECT SUM(IF(tbl1.til='a',tbl1.beløb,-tbl1.beløb)) AS sum FROM tabel AS tbl1 WHERE tbl1.til='a' OR tbl2.til='a'



t