[MySQL] Sum uit 2 tabellen

Pagina: 1
Acties:
  • 182 views sinds 30-01-2008
  • Reageer

  • spone
  • Registratie: Mei 2002
  • Niet online
De situatie is als volgt:

Ik heb twee tabellen, zeg tbla en tblb. In iedere tabel zitten minimaal 2 velden, zeg id en value.

Wat ik wil is de som van value uit tbla en de som van value uit tblb bij elkaar optellen en en eruit gooien als bijvoorbeeld 'totaal'. Hiertoe kwam ik op de volgende query:

SQL:
1
2
3
4
SELECT SUM(tbla.value) AS sum_a, SUM(tblb.value) AS sum_b, sum_a+sum_b AS totaal
FROM tbla, tblb
WHERE tbla.id = tblb.id
GROUP BY id


Maar dit werkt niet, omdat MySQL mij vertelt "Unknown column 'sum_a' in 'field list'".

Heb verder nog geprobeerd
SQL:
1
SELECT SUM(tbla.value)+SUM(tblb.value) AS totaal
te doen, maar daar komt ook niet het gewenste resultaat uit. Nou ben ik niet echt een ster in sql, maar ik had wel het gevoel dat dit niet zo ingewikkeld zou moeten zijn ;)

Iemand een ideetje waar de fout zit?

Desktop: i5-14600K, 32GB DDR5-6000, RTX 5070 Ti; Laptop: MacBook Pro M1 Pro 14" 16/512; Server: R9-7950X, 192GB DDR5-5600


  • PhysicsRules
  • Registratie: Februari 2002
  • Laatst online: 22-12-2025

PhysicsRules

Dux: Linux voor Eenden

Kent MySQL het UNION statement?

dan kun je iets doen als
SQL:
1
2
3
4
SELECT SUM(value) FROM 
  (SELECT tbla.value AS value FROM tbla
   UNION
   SELECT tblb.value AS value FROM tblb)

  • moozzuzz
  • Registratie: Januari 2005
  • Niet online
Wil je niet gewoon:
SQL:
1
2
3
4
SELECT tbla.value+tblb.value AS totaal 
FROM tbla, tblb 
WHERE tbla.id = tblb.id 
GROUP BY id
of heeft een ID meerdere occurences?

  • spone
  • Registratie: Mei 2002
  • Niet online
PhysicsRules schreef op donderdag 13 juli 2006 @ 17:56:
Kent MySQL het UNION statement?

dan kun je iets doen als
SQL:
1
2
3
4
SELECT SUM(value) FROM 
  (SELECT tbla.value AS value FROM tbla
   UNION
   SELECT tblb.value AS value FROM tblb)
Union snapt ie volgens mij wel, maar het gebruik van subqueries valt mysql (gebruik versie 4) over, met als gevolg dat de query niet werkt.

@moozzuzz: ja, de id komt vaker dan eens voor. Ik zal de zaken even ietsje proberen te verduidelijken:

tbla:
> aid
> id (eigenlijk userid maar id was makkelijker voor het voorbeeld)
> value

tblb:
> bid
> id (idem als boven)
> value
> nog wat velden

van tbla moet er van alle records met id=iets een som gemaakt worden van de value kolom. Datzelfde voor tblb en die twee resultaten moeten bij elkaar opgeteld worden.

Desktop: i5-14600K, 32GB DDR5-6000, RTX 5070 Ti; Laptop: MacBook Pro M1 Pro 14" 16/512; Server: R9-7950X, 192GB DDR5-5600


  • P_de_B
  • Registratie: Juli 2003
  • Niet online
SQL:
1
2
3
4
SELECT tbla.id, SUM(tbla.value + tblB.Value) as TotaalValueBeideTabellenPerId
FROM tbla
INNER JOIN tblb ON tbla.id = tblb.id
GROUP BY tbla.Id


Bovenstaande geeft dus per occurance van id het toaal van a.value en b.value.

[ Voor 5% gewijzigd door P_de_B op 13-07-2006 20:54 . Reden: rml gefixt ]

Oops! Google Chrome could not find www.rijks%20museum.nl


  • Dido
  • Registratie: Maart 2002
  • Laatst online: 14-02 11:11

Dido

heforshe

Aangezien je inderdaad een (impliciete) inner join gebruikt wil je dus kennelijk het totaal van de sommen(A+B) hebben, hetgeen hetzelfde is als de som van de totalen in dit geval.
Bovenstaande zou dus precies het goede antwoord moeten geven.

Wat betekent mijn avatar?


  • spone
  • Registratie: Mei 2002
  • Niet online
Dido schreef op donderdag 13 juli 2006 @ 21:00:
Aangezien je inderdaad een (impliciete) inner join gebruikt wil je dus kennelijk het totaal van de sommen(A+B) hebben, hetgeen hetzelfde is als de som van de totalen in dit geval.
Bovenstaande zou dus precies het goede antwoord moeten geven.
En dat doet het ook :)

Bedankt!

Desktop: i5-14600K, 32GB DDR5-6000, RTX 5070 Ti; Laptop: MacBook Pro M1 Pro 14" 16/512; Server: R9-7950X, 192GB DDR5-5600

Pagina: 1