Mailinglisten-Archive |
Sven Eicher schrieb: >>>Nun möchte ich den aktuellen Stand, also die Menge an Einnahmen nach >>>Abzug der Ausgaben wissen. >>> >>>SELECT namen.name, >>> SUM(einnahmen.menge) - SUM(ausgaben.menge) AS bestand >>> FROM namen, einnahmen, ausgaben >>> GROUP BY namen.p_id >>> >>>Aber irgendwo hab ich da wohl einen mächtigen Denkfehler drin. >> >>vielleicht solltest du MySQL noch sagen _wie_ er die Tabellen verknüpfen >>soll, nämlich anhand der `p_id` >>entweder im WHERE >>oder noch besser gleich per LEFT JOIN mit ON oder USING > > > Hab es so probiert: > > SELECT namen.name, SUM( einnahmen.menge ) - SUM( ausgaben.menge ) AS bestand > FROM namen > LEFT JOIN ausgaben ON namen.p_id = ausgaben.p_id > LEFT JOIN einnahmen ON namen.p_id = einnahmen.p_id > GROUP BY namen.p_id > > Aber die Berrechnug ist dennoch falsch. > Die Ausgaben werden korrekt von den Einnahmen abgezogen, aber dann wird das > Ergebnis wieder mit den Einnahmen addiert und als Endergebnis ausgegeben. > > Mit meinen Beispielzahlen wäre das dann: > 1000 - 50 -100 + 1000 = 1850 > > Ich verstehs nicht )-: logisch ist es schon: name einnahmen ausgaben test 1000 100 test 1000 50 macht: name SUM(einnahmen) SUM(ausgaben) test 2000 150 macht: name bestand test 850 einfacher wäre: CREATE TABLE `ausgaben` ( `p_id` int(11) NOT NULL default '0', `menge` int(11) NOT NULL default '0', KEY `p_id` (`p_id`) ) TYPE=MyISAM; INSERT INTO `ausgaben` VALUES (1, 100); INSERT INTO `ausgaben` VALUES (1, 50); INSERT INTO `ausgaben` VALUES (1, -1000); CREATE TABLE `namen` ( `p_id` int(11) NOT NULL auto_increment, `name` varchar(100) NOT NULL default '', PRIMARY KEY (`p_id`) ) TYPE=MyISAM; INSERT INTO `namen` VALUES (1, 'test'); SELECT `namen`.`name`, SUM(`ausgaben`.`menge`) AS `bestand` FROM `namen` LEFT JOIN `ausgaben` USING (`p_id`) GROUP BY `namen`.`p_id` p.s. dir fehlen die Indizes auf `p_id` -- Sebastian Mendel www.sebastianmendel.de www.warzonez.de www.tekkno4u.de www.nofetish.com www.sf.net/projects/phpdatetime www.sf.net/projects/phptimesheet
php::bar PHP Wiki - Listenarchive