У меня есть 3 таблицы: user_transaction, транзакция и пользователи
Я пытаюсь создать сводную таблицу отдельных транзакций
на каждую дату
для каждого сотрудника
за каждый ресурс
следующим образом: (фильтрация даты и времени с использованием спецификатора формата)
select
count(distinct(user_transaction.trans_id)) as obj,
DATE_FORMAT(DATE, '%Y-%m-%d') as tdate
from
user_transaction, transaction,users
where
users.id = user_transaction.user_id
and users.employeeid = 'samuel'
and user_transaction.trans_id=transaction.id
and resource_id =1 and transactiontext like '%<-->%'
and DATE_FORMAT(user_transaction.date,'%Y-%m-%d')
between '2011-08-30' and '2011-11-28'
group by
DATE_FORMAT(user_transaction.DATE, '%Y-%m-%d')
Результатом вышеупомянутого запроса является то, что я получаю различное количество транзакций для пользователя 'samuel' на каждую дату в диапазоне
например. 2011-08-30 ............ 22;
2011-09-01 ............ 431;
2011-09-03 ............ 64;
и т.д ..
теперь я суммирую все эти значения и получаю для пользователя общее количество: 1486
Это количество не совпадает с моим измененным запросом для того же пользователя и диапазона дат, если я выполняю прямой подсчет без группировки по полю в поле Дата.
то есть, если я выполню запрос ниже без группировки дат:
select
count(distinct(user_transaction.trans_id)) as obj,
from
user_transaction, transaction,users
where
users.id = user_transaction.user_id and users.employeeid = 'samuel'
and user_transaction.trans_id=transaction.id
and resource_id =1 and transactiontext like '%<-->%'
and DATE_FORMAT(user_transaction.date,'%Y-%m-%d')
between '2011-08-30' and '2011-11-28'
Это дает мне счет как 1452,
подсчет диапазона с группировкой дат и суммированием для получения итогового значения обычно больше для каждого пользователя, не знаю почему.
Мне нужно рассчитать число для каждой даты в моей сводной таблице.
Счет, который я получаю напрямую, без использования предложения group by, правильный, проверил его в таблице.
Что именно я делаю неправильно в предложении group by?