2015-08-09 3 views
0

Я пытаюсь получить в общей сложности каждый день/магазин продаж с помощью следующего запроса:Mysql результат сумма дублируется

SELECT st.name, SUM(sa.val), sa.sale_date FROM sales sa 
    INNER JOIN employee e ON sa.employee_id 
INNER JOIN store st ON e.store_id 
GROUP BY st.name, sa.sale_date 
ORDER BY sa.sale_date 

Но он генерирует дублированные результаты для SUM.

+---------+-------------+------------------------+ 
| name | SUM(sa.val) |  sale_date  | 
+---------+-------------+------------------------+ 
| Store 1 |   800 | July, 29 2015 00:00:00 | 
| Store 2 |   800 | July, 29 2015 00:00:00 | 
+---------+-------------+------------------------+ 

Оно должно быть:

+---------+-------------+------------------------+ 
| name | SUM(sa.val) |  sale_date  | 
+---------+-------------+------------------------+ 
| Store 1 |   100 | July, 29 2015 00:00:00 | 
| Store 2 |   300 | July, 29 2015 00:00:00 | 
+---------+-------------+------------------------+ 

Fiddle: http://sqlfiddle.com/#!9/0faa35/40

+1

Возможно, вам необходимо где условие 'где sale_date =«2015-07-29» 'и удалить' sale_date' из группы по ..., если это это не то, что вы ищете, тогда вам нужно уточнить вопрос немного больше. –

+0

Не давая повторяющихся результатов, он дает правильные результаты в соответствии с группой по логике, если вам нужно получить сумму 29-го, а затем поставить предложение where –

ответ

1

Ваши условия соединения являются неполными. См измененное «ON» положений в приведенном ниже заявлении:

SELECT st.name, SUM(sa.val), sa.sale_date FROM sales sa 
    INNER JOIN employee e ON sa.employee_id=e.id 
    INNER JOIN store st ON e.store_id=st.id 
GROUP BY st.name, sa.sale_date 
ORDER BY sa.sale_date 
+0

Не могу поверить, что это было просто ... Спасибо, я помету это как ответ когда возможен. Не могли бы вы объяснить, что произошло? –

+0

@ AndréRoggeriCampos Предложение 'ON' работает так же, как предложение WHERE. Это должно быть условие *. Я рекомендую вам ознакомиться с http://www.khankennels.com/blog/index.php/archives/2007/04/20/getting-joins/ и http://blog.codinghorror.com/a-visual-explanation-of -sql-joins /, чтобы понять, как условия объединения уменьшают количество сгенерированных строк (а в вашем случае влияет на совокупные суммы) – Hazzit

Смежные вопросы