Toon posts:

[Mysql] 2 tabellen in 1 query optellen met SUM *

Pagina: 1
Acties:

Verwijderd

Topicstarter
Ik wil nu met een mysql query tabel 1 en 2 uitlezen en dan hits optellen via een SUM(), Weet iemand hoe ik dit voor elkaar kan krijgen, date en blaat kunnen uniek zijn en hits ook maar dan moet ie ze wel erbij tellen, weet iemand een query hiervoor

tabel 1.:
------------
date (DATE)
blaat (INT)
hits (INT)

tabel 2.:
------------
date (DATE)
blaat (INT)
hits (INT)

  • Nielsz
  • Registratie: Maart 2001
  • Niet online
waarom heb jij 2 tabellen met dezelfde velden erin?

  • Rotjeknor
  • Registratie: April 2001
  • Laatst online: 03-02 15:29
dus als date1 = date2 en blaat1=blaat2 dan sum = hits1 + hits2?

Ook Knor is aangestoken met het ligfietsvirus!


Verwijderd

Topicstarter
yep zoiets hoe doe ik dat

Verwijderd

Topicstarter
als table 1 deze inhoud heeft

date | blaat | hits
-------------------------
2002-02-06 | 50 | 30
2002-02-05 | 10 | 30

en table 2 deze inhoud

date | blaat | hits
-------------------------
2002-02-06 | 50 | 50

dan moet er dit uitkomen

date | blaat | hits
-------------------------
2002-02-06 | 50 | 60
2002-02-05 | 10 | 30

  • jsiegmund
  • Registratie: Januari 2002
  • Laatst online: 13:00
SELECT tone.date, tone.blaat, tone.hits+ttwo.hits
FROM table1 AS tone, table2 AS ttwo
WHERE tone.date=ttwo.date

moet volgens mij genoeg zijn? Je voorbeeldje klopt trouwens niet, 50 + 30 is volgens mij toch nog altijd 80? :S Of begrijp ik je nu echt verkeerd? Ik heb de tabelnamen even met AS anders gemaakt, is makkelijker met het omzetten naar jou eigen database lijkt me (nee, de namen nu omzetten is inderdaad redelijk overbodig :P)
Als je met bovenstaande ff stoeit kom je er wel uit denk ik, en anders ff opnieuw posten :)

[ Voor 0% gewijzigd door jsiegmund op 04-10-2002 15:54 . Reden: ik had SUM gebruikt maar dat is volgens mij niet eens nodig, ff geen tijd meer om goed te lezen, ik kom nog wel een keer terug... morgen ofzo, als de topic al lang klaar is :) ]


  • drm
  • Registratie: Februari 2001
  • Laatst online: 09-06-2025

drm

f0pc0dert

volgens mij moet je niet voor elke andere pagina een aparte tabel aanmaken, denk dat dat handiger is.

Music is the pleasure the human mind experiences from counting without being aware that it is counting
~ Gottfried Leibniz


  • Sybr_E-N
  • Registratie: December 2001
  • Laatst online: 13:51
Als je het handig wilt aanpakken is tabel met de hits genoeg.

Verwijderd

Topicstarter
ik kom een stuk verder met dit voorbeeld alvast bedankt maar heb nog steeds een probleem hij telt nu de hits van table2 bij de hits van table1 dat moet niet bij elke datum alleen bij de datum die overeenkomt met table1

hoe kan ik dit oplossen...
iCe01 schreef op 04 oktober 2002 @ 15:52:
SELECT tone.date, tone.blaat, tone.hits+ttwo.hits
FROM table1 AS tone, table2 AS ttwo
WHERE tone.date=ttwo.date

moet volgens mij genoeg zijn? Je voorbeeldje klopt trouwens niet, 50 + 30 is volgens mij toch nog altijd 80? :S Of begrijp ik je nu echt verkeerd? Ik heb de tabelnamen even met AS anders gemaakt, is makkelijker met het omzetten naar jou eigen database lijkt me (nee, de namen nu omzetten is inderdaad redelijk overbodig :P)
Als je met bovenstaande ff stoeit kom je er wel uit denk ik, en anders ff opnieuw posten :)

  • .oisyn
  • Registratie: September 2000
  • Laatst online: 31-08 15:26

.oisyn

Moderator Devschuur®

Demotivational Speaker

toffe topictitel :{

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.


Verwijderd

Topicstarter
ik zag het, maar dat had ik ook al geprobeerd maar kom er echt niet uit, en ben al 1 week bezig.

Verwijderd

Topicstarter
2002-06-01 65724
2002-06-01 65695
2002-06-01 65697
2002-06-01 65694
2002-06-01 65728
2002-06-01 65710
2002-06-01 65694
2002-06-01 65682
2002-06-01 65722
2002-06-01 65812
2002-06-01 65699

dat is het resultaat, 2002-06-01 is er maar eentje maar er staan er een hoop en dat klopt al niet en hij telt bij elke resultaat de som van table1 dus dat klopt ook niet, ik krijg het niet aan de praat met sum, kan iemand me helpen, thanks.

ps.: blaat heb ik weggelaten.

  • robjanssen
  • Registratie: September 2001
  • Laatst online: 02-08 16:10

robjanssen

Software Developer

Wat is die blaat eigenlijk?

code:
1
2
3
SELECT t1.date, SUM(t1.blaat), SUM(t1.hits) + (SELECT SUM(t2.hits) FROM tabel2 t2 WHERE t2.date = t1.date)
FROM tabel1 t1
GROUP BY t1.date

Verwijderd

Topicstarter
SELECT t1.date, SUM(t1.hits),(SELECT SUM(t2.hits) FROM hits_today as t2 WHERE t2.date = t1.date)
FROM hits_2002 as t1
GROUP BY t1.date

resultaat.:
You have an error in your SQL syntax near 'SELECT SUM(t2.hits) FROM hits_today as t2 WHERE t2.date = t1.date)
FROM hits_20' at line 1

ps.: het is mysql, dubbele queries gaat toch niet dan ?

Verwijderd

Topicstarter
de datum van vandaag staat nog niet in de 2de tabel wel in de 1ste.

heeft iemand nog raad hoe ik dit kan oplossen, bedankt, het is voor een project wat af moest zijn allang.

  • Morpheus_at_work
  • Registratie: December 2000
  • Laatst online: 12:55
edit : las niet goed

Canon R6 MARK III, 35mm 1.4 VCM, 50mm 1.4 VCM , 85mm 1.4 VCM , 17-35mm 1.8, 28-70 1.8 , 24-105 1.8 70-200 f2.8


  • Morpheus_at_work
  • Registratie: December 2000
  • Laatst online: 12:55
Select Sum(a.variable) as suma , sum(b.variable) as sumb , sum(suma+sumb) as sumab from .........

Canon R6 MARK III, 35mm 1.4 VCM, 50mm 1.4 VCM , 85mm 1.4 VCM , 17-35mm 1.8, 28-70 1.8 , 24-105 1.8 70-200 f2.8


Verwijderd

Topicstarter
SQL-query:
SELECT SUM(a.hits) as hits_a,SUM(b.hits) as hits_b,SUM(hits_a+hits_b) as hits FROM hits_today AS a,hits_2002 AS b GROUP BY a.date,b.date

MySQL retourneerde:
Unknown column 'hits_a' in 'field list'

  • Goodielover
  • Registratie: November 2001
  • Laatst online: 18-08 11:34

Goodielover

Only The Best is Good Enough.

Definieer eerst een view van een union over tabel1 en tabel2
Op deze view kan je dan je normale sum gaan toepassen met een group by op datum en blaat.
Hierdoor voorkom je dat je moet gaan joinen.
Eigenlijk is je ontwerp verkeerd, maar a la.

  • Orphix
  • Registratie: Februari 2000
  • Niet online
Goodielover schreef op 09 oktober 2002 @ 13:03:
Definieer eerst een view van een union over tabel1 en tabel2
Op deze view kan je dan je normale sum gaan toepassen met een group by op datum en blaat.
Hierdoor voorkom je dat je moet gaan joinen.
Eigenlijk is je ontwerp verkeerd, maar a la.
view ... union ... mysql :? :D

Verwijderd

Topicstarter
hebben we weinig aan eigenlijk, we draaien geen mysql 4 omdat ie nog niet stabiel is verklaard, is er geen andere oplossingn ?

UNION is implemented in MySQL 4.0.0.

Verwijderd

Zoiets?
code:
1
2
3
4
5
SELECT T1.date AS datum, T1.blaat, SUM( T1.hits ) + SUM( T2.hits ) AS hits_per_dag
FROM tabel1 AS T1
LEFT OUTER JOIN tabel2 AS T2 ON T1.blaat = T2.blaat
                                AND T1.date = T2.date
GROUP BY T1.date, T1.blaat


Als er alleen gegroepeerd hoeft te worden op datum of je wil een totaal van de hits per dag dan wordt het:

code:
1
2
3
4
SELECT T1.date AS datum, T1.blaat, SUM( T1.hits ) + SUM( T2.hits ) AS hits_per_dag
FROM tabel1 AS T1
          LEFT OUTER JOIN tabel2 AS T2 ON T1.date = T2.date
GROUP BY T1.date


of denk ik te simpel?
Pagina: 1