Ik heb onderstaande SQL queries die perfect doen wat ze moeten doen, voor elke maand het totaal van alle behandelingen/arrangementen in een agenda opvragen en sorteren zodat ik ze nadien eventueel in een grafiek kan gooien. Nu zou ik de treatments.price en arrangements.price willen optellen maar het probleem is dat er per agenda_id meerdere treatments en ook meerdere arrangementen mogelijk zijn en dus krijg ik altijd de verkeerde prijs terug (waarschijnlijk omdat hij 3 behandelingen heeft en dus ook 3x het arrangement telt dat aan die agenda item hangt).
Onderstaande leek wat mij betreft juist maar werkt dus niet:
Iemand enig idee? Ik heb ergens gelezen dat je binnen een SUM ook een select kan doen maar dat blijkt niet te werken... Ik kan wel iets van sql maar dit lijkt voor mij (zelfs na uren zoeken) net iets te hoog gegrepen vrees ik.
code:
1
2
3
4
5
| SELECT `agenda`.*, SUM(treatments.price) FROM (`agenda`) JOIN `agenda_treatments` ON `agenda_treatments`.`agenda_id` = `agenda`.`agenda_id` JOIN `treatments` ON `treatments`.`treatment_id` = `agenda_treatments`.`treatment_id` WHERE `agenda`.`user_id` = '9' AND agenda.date > '2013-01-17' AND agenda.date < '2015-01-17' GROUP BY year(agenda.date), month(agenda.date) |
code:
1
2
3
4
5
| SELECT `agenda`.*, SUM(arrangements.price) FROM (`agenda`) JOIN `agenda_arrangements` ON `agenda_arrangements`.`agenda_id` = `agenda`.`agenda_id` JOIN `arrangements` ON `arrangements`.`arrangement_id` = `agenda_arrangements`.`arrangement_id` WHERE `agenda`.`user_id` = '9' AND agenda.date > '2013-01-17' AND agenda.date < '2015-01-17' GROUP BY year(agenda.date), month(agenda.date) |
Onderstaande leek wat mij betreft juist maar werkt dus niet:
code:
1
2
3
4
5
6
7
| SELECT `agenda`.*, SUM(treatments.price), SUM(arrangements.price) FROM (`agenda`) JOIN `agenda_treatments` ON `agenda_treatments`.`agenda_id` = `agenda`.`agenda_id` JOIN `agenda_arrangements` ON `agenda_arrangements`.`agenda_id` = `agenda`.`agenda_id` JOIN `arrangements` ON `arrangements`.`arrangement_id` = `agenda_arrangements`.`arrangement_id` JOIN `treatments` ON `treatments`.`treatment_id` = `agenda_treatments`.`treatment_id` WHERE `agenda`.`user_id` = '9' AND agenda.date > '2013-01-17' GROUP BY year(agenda.date), month(agenda.date) |
Iemand enig idee? Ik heb ergens gelezen dat je binnen een SUM ook een select kan doen maar dat blijkt niet te werken... Ik kan wel iets van sql maar dit lijkt voor mij (zelfs na uren zoeken) net iets te hoog gegrepen vrees ik.