[SQL] Problemen met SUM() en overige tabellen

Pagina: 1
Acties:

  • Erpenator2
  • Registratie: Augustus 2003
  • Laatst online: 26-05 22:07
Ik heb een probleem mijn mijn query voor wat statistieken in php
Wanneer ik in de onderstaande tabel deze code loslaat gaat het goed!

code:
1
SELECT sum(aantal) as totaal FROM screensize


output = Totaal = 12 ( dat klopt)


Waneer ik hierbij andere kolomen toevoeg met het volgende sql statement krijg ik als output:
code:
1
SELECT sum(aantal) as totaal, screensize, aantal FROM screensize GROUP BY ID


totaal screensize aantal
7 1024x768 7
3 1152x864 3
2 800x600 2

Wat ik eigenlijk wil in de kolom totaal is dat daar 12 staat. Het lijkt me dat dit in een query mogelijk is. Dit wil ik graag omdat ik meerder soortgelijke kolomen heb en anders veel te veel query's moet doen en het overzicht helemaal kwijt ben. Ik wil ook liever niet mijn tabellen aanpassen, maar als er echt geen andere oplossing is .... Wie kan me verder helpen.

code:
1
2
3
4
5
6
7
CREATE TABLE screensize (
  id int(5) NOT NULL auto_increment,
  screensize tinytext NOT NULL,
  aantal int(11) NOT NULL default '0',
  PRIMARY KEY  (id),
  UNIQUE KEY id (id)
) TYPE=MyISAM;

  • dusty
  • Registratie: Mei 2000
  • Laatst online: 21-02 00:06

dusty

Celebrate Life!

Ik zie in je voorbeeld code dat je MySQL gebruikt.

Oplossing: Onmogelijk om het in een query te doen, met de huidige MySQL versies.

Back In Black!
"Je moet haar alleen aan de ketting leggen" - MueR


  • Erpenator2
  • Registratie: Augustus 2003
  • Laatst online: 26-05 22:07
Dat zou wel heel erg jammer zijn :(

  • dusty
  • Registratie: Mei 2000
  • Laatst online: 21-02 00:06

dusty

Celebrate Life!

Je zou gewoon de eerste query los kunnen laten en dan de tweede query.

Wat je ook zou kunnen doen is gewoon de tweede query loslaten en in je programmeertaal het kolom 'aantal' bij elkaar optellen.

Back In Black!
"Je moet haar alleen aan de ketting leggen" - MueR


  • Erpenator2
  • Registratie: Augustus 2003
  • Laatst online: 26-05 22:07
Ik denk dat het dan nog het beste is om met php ( mijn programmeertaal )
het aantal op te tellen inderdaad. Ik wil de aantallen om gaan zetten in %
Dat geeft een duidelijker beeld denk ik.

Als niemand meer reageerd zal ik het zo maar moeten doen. In ieder geval erg bedankt voor je reactie dusty

  • Kermit.de.Kikker
  • Registratie: Februari 2002
  • Laatst online: 21:59
Edit : niet goed gelezen, laat maar

Je kan toch gewoon het aantal records tellen met count(id) ?

[ Voor 72% gewijzigd door Kermit.de.Kikker op 28-11-2003 00:21 ]


  • Erpenator2
  • Registratie: Augustus 2003
  • Laatst online: 26-05 22:07
Ik kan geen count gebruiken omdat de waarders allemaal maar 1 keer voorkomen.
Dus dan krijg ik iedere keer totaal = 1

  • BetuweKees
  • Registratie: Januari 2003
  • Laatst online: 15-05 20:44

BetuweKees

Flipje uit Tiel

COUNT(*) is vlgs mij de oplossing..

Through meditation I program my heart to beat breakbeats and hum basslines on exhalation -Blackalicious || *BetuweKees was AFK; op de fiets richting China en verder


  • dusty
  • Registratie: Mei 2000
  • Laatst online: 21-02 00:06

dusty

Celebrate Life!

count(*) kan je het aantal records lezen, met group by is het inderdaad ook nog te doen om de dingen die bij elkaar horen op te tellen, maar Erpenator2 wilt ook nog in dezelfde query de totale aantal van ALLE rijen weten. Dat kan dus NIET in dezelfde query. (althans niet met MySQL.)

Back In Black!
"Je moet haar alleen aan de ketting leggen" - MueR


  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
Uhm....
Het kan aan mij liggen (ik gebruik ook nooit MySQL), maar zou dit ook niet werken?
code:
1
2
3
SELECT sum(aantal) as totaal, screensize, aantal
FROM screensize
GROUP BY ID, screensize, aantal


Dit werkt iig onder MSSQL, geen flauw idee hoe MySQL dat doet...

Want wat jij doet klopt niet eens als je het mij vraagt... Sum is een aggregate function, hoe zou 'ie dan je screensize en aantal kunnen koppelen aan de juiste sum zonder een correcte "group by"? <hmmmmm, ik zeg 't een beetje krom, maar je snapt vast wat ik bedoel ;) >

[ Voor 33% gewijzigd door RobIII op 29-11-2003 00:30 ]

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij


  • Grijze Vos
  • Registratie: December 2002
  • Laatst online: 21-02 23:50
Een group by op 3 verschillende kolommen kan? Hmz, lijkt mij van niet, eigenlijk..

Op zoek naar een nieuwe collega, .NET webdev, voornamelijk productontwikkeling. DM voor meer info


  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
Grijze Vos schreef op 29 november 2003 @ 00:49:
Een group by op 3 verschillende kolommen kan? Hmz, lijkt mij van niet, eigenlijk..
<zucht>
probéér het dan gewoon.... jazeker kan het...tenminste het is geldig SQL. Of MySQL er mee overweg kan is een tweede.

http://www.techonthenet.com/sql/group_by.htm
SELECT column1, column2, ... column_n, aggregate_function (expression)
FROM tables
WHERE predicates
GROUP BY column1, column2, ... column_n;

[ Voor 30% gewijzigd door RobIII op 29-11-2003 09:09 ]

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij

Pagina: 1