2016-02-12 6 views
0

Я хотел бы суммировать два столбца из двух разных таблиц, а затем группировать их по идентификатору пользователя (uid). Я действительно играл, но, кажется, многократно умножал результаты на количество строк в столбце. http://sqlfiddle.com/#!9/433a5e/3Сумма и группа Mysql на двух таблицах

ответ

1

У вас есть несколько строк для каждого uid в обеих таблицах. Следовательно, для uid вы получаете декартово произведение - 2 строки в одной таблице для uid и 3 строки в другом - 6 строк с большим количеством дублированных данных.

SO, агрегировать данные перед выполнением объединения:

select s.uid, sumscore, sumorder 
from (select s.uid, sum(s.score) as sumscore 
     from scores s 
     group by s.uid 
    ) s left join 
    (select o.uid, sum(o.order) sumorder 
     from orders o 
     group by o.uid 
    ) o 
    on o.uid = s.uid; 

Here результаты в SQL Fiddle.

+0

Это хорошо, так +1. –

+0

Отлично! Я отлично работаю для меня. Еще раз спасибо. – Henioryb

0

Возможно, вы ищете это. Попробуйте это и сообщите мне, это полезно или нет для вас.

SELECT s.uid, SUM(s.score) as score_tot, (SELECT SUM(orders.order) FROM orders WHERE orders.uid = s.uid GROUP BY orders.uid) as order_tot FROM scores as s GROUP BY s.uid 

sqlfiddle здесь

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