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
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'