[MySQL] Probleem met optellen

Pagina: 1
Acties:

  • kleautviool
  • Registratie: Mei 2003
  • Laatst online: 21-05 19:24
Zoals de titel al zegt, ik heb een (in mijn ogen vreemd) probleem met het bij elkaar optellen van gegevens uit een database.

Ik ben bezig aan een systeem waarin ik al mijn inkomsten en uitgave makkelijk bij kan houden, en een in een duidelijk overzicht weer kan geven. Nu heb ik de volgende database met de volgende waarden:

PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
<?php
CREATE TABLE `administratie` (
  `a_id` smallint(11) NOT NULL auto_increment,
  `a_datum` datetime NOT NULL default '0000-00-00 00:00:00',
  `a_bedrag` float(10,2) NOT NULL default '0.00',
  `a_omschrijving` text NOT NULL,
  `a_verstrekker` varchar(80) NOT NULL default '',
  `a_betalingswijze` enum('overboeking','contant','tegoedbon') NOT NULL default 'overboeking',
  `a_soort` enum('inkomsten','uitgave') NOT NULL default 'inkomsten',
  PRIMARY KEY  (`a_id`)
) TYPE=MyISAM AUTO_INCREMENT=4 ;

#
# Dumping data for table `administratie`
#

INSERT INTO `administratie` VALUES (1, '0000-00-00 00:00:00', '75.00', 'Voor de lol', 'Maurice', 'overboeking', 'inkomsten');
INSERT INTO `administratie` VALUES (2, '0000-00-00 00:00:00', '33.54', 'Broek', 'Maurrice', 'overboeking', 'uitgave');
INSERT INTO `administratie` VALUES (3, '0000-00-00 00:00:00', '453.78', 'Salaris', 'Maurice', 'overboeking', 'inkomsten');
?>


Nu wil ik alle waardes van het veld a_bedrag waarbij het veld a_soort 'inkomsten' is, bij elkaar optellen, maar hierbij gaat het fout (Dus de waardes 75.00 + 453.78 bij elkaar optellen). Ik heb al op internet via google gezocht, maar kom er niet achter wat ik fout doe. Ik heb momenteel de volgende code:

PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
<?php
       $sql = ("
           SELECT 
               a_id, 
               a_soort, 
               SUM(a_bedrag)
           FROM 
               administratie
           WHERE
               a_soort = 'inkomsten'
           GROUP BY
               a_soort
       ");
       $result = mysql_query($sql) or die(mysql_error());
       while($show = mysql_fetch_assoc($result))  {
           echo("            <li id=\"overzicht-kas\">Momenteel heb je ".$show['a_bedrag']." te besteden!</li>\n");
       }
?>


Volgens mij zou dit moeten werken, maar dat doet het niet. Wie ziet er dan wat ik fout doe??

edit:
Ik krijg trouwens geen parse-errors oid.

[ Voor 12% gewijzigd door kleautviool op 09-08-2004 14:24 ]


  • Wacky
  • Registratie: Januari 2000
  • Laatst online: 09:20

Wacky

Dr. Lektroluv \o/

Probeer deze query eens:

code:
1
SELECT a_id, a_soort, SUM(a_bedrag) as bedrag FROM administratie WHERE a_soort = 'inkomsten'


En dan de waarde 'bedrag' echo-en :)

Nu ook met Flickr account


  • Janoz
  • Registratie: Oktober 2000
  • Laatst online: 09:13

Janoz

Moderator Devschuur®

!litemod

P&W FAQ - SQL


Ik mis in je startpost trouwens de stukjes "Wat krijg je als resultaat " en "Waarom dit afwijkt van hetgeen ik wil hebben".

[ Voor 51% gewijzigd door Janoz op 09-08-2004 14:28 ]

Ken Thompson's famous line from V6 UNIX is equaly applicable to this post:
'You are not expected to understand this'


  • kleautviool
  • Registratie: Mei 2003
  • Laatst online: 21-05 19:24
Als ik de query van Wacky probeer krijg ik deze error:
Mixing of GROUP columns (MIN(),MAX(),COUNT()...) with no GROUP columns is illegal if there is no GROUP BY clause
Ok, de GROUP BY clause eraan toegevoegd, maar dat werkt ook niet.

Ik krijg telkens gewoon geen output. En dit wijkt af van hetgeen ik wil, omdat ik juist wél een output (het liefst de goede :P) wil hebben :+

En ik zal die pagina even doorlezen, bedankt voor de link i.i.g.

edit:
De query van Wacky werkt wél als ik AS a_bedrag doe. Bednakt dus

[ Voor 8% gewijzigd door kleautviool op 09-08-2004 14:45 ]


  • ZEN
  • Registratie: April 2000
  • Laatst online: 15-05 14:11

ZEN

huh? wat doe ik hier?

Wat ook een beetje vreemd is, is dat je het totaal wilt hebben van die 3 velden, maar dan ook nog id en soort wilt opvragen.

Doe die query eens zonder a_id en a_soort. Die heb je toch niet nodig lijkt me bij een totaal.

Dan krijk je dus gewoon 1 result terug.. ipv 3 met steeds hetzelfde totaal.

Linux server installatie en beheer (clusters failover loadbalancing): http://www.virtualconcepts.nl/