Есть вот такой запрос:
select csv_data.agent_id, sum(rewards.score) as dm_rewards from csv_data
left join rewards on rewards.agent_id=csv_data.agent_id and date(rewards.date)=date(csv_data.dialed_date)
join tbl_members_plans on csv_data.plan_id=tbl_members_plans.id
where tbl_members_plans.member_id=4
and dialed_date>='2013-01-15 01:00:00'
and dialed_date<='2013-01-15 23:00:00'
group by csv_data.agent_id
исходя из особенностей проекта, могу менять только JOIN-ы, например "left join rewards...", могу добавлять поля в SELECT. Могу добавить таблицу во FROM
Теперь то, что нужно сделать, но не получается:
Есть две 4 таблицы:
csv_data, rewards и tbl_members_plans
в csv_data данные могут содержать один и тот же agent_id за день, выборка ведется за определенные период (что видно из where),
в rewards данные такого типа:
agent_id | date | score
----------------------
1 | 2013-01-15 | 10
2 | 2013-01-15 | 20
3 | 2013-01-15 | -50
1 | 2013-01-16 | 20
2 | 2013-01-16 | 20
3 | 2013-01-16 | 30
...
когда я выполняю данный запрос, я получаю неправильную сумму по score из-за того, что в csv_data может быть несколько разных agent_id, т.е. если убрать все агрегаторы (sum() и group by) то я получаю данные типа
agent_id | dm_rewards
----------------------
1 | 10
1 | 10
1 | 10
2 | 20
2 | 20
3 | -50
...
если группировать и суммировать (как в изначальном запросе), то сумма совсем неправильная :(
Как можно изменить запрос в таких строгих рамках, как у меня (могу менять только join-ы, добавлять from-ы и полять в select)
И можно ли вообще.
Спасибо, что осилили :) Если ответите, то вообще цены вам не будет :)