Задать вопрос
@kr_ilya

Как выбрать общую сумму из двух таблиц?

Есть 3 таблицы
fc_users
id, refname, refid
1, qqwe, 2
2, qwerty, 1
3, qqwe, 2

fc_deposit
sum, usid, date_add
100, 3, 1000
54, 2, 1111
10, 3, 1234

fc_bal_ins
sum, usid, date_add, status
50, 3, 1111, 2
1000, 1, 1500, 1

Нужно выбрать refname, refid и самую большую общую сумму по двум таблицам. При этом сумма должна высчитываться отдельно для каждого usid (id в таблицу fc_users) и группироваться по столбцу refname. Так же должно быть условие fc_bal_ins.status = 2

Т.е для выборки одной записи в результате должно получиться:
qqwe, 2, 160

При выборке >1
qqwe, 2, 160
qwerty, 1, 54

Т.е мы должны сложить все значения таблиц fc_deposit и fc_bal_ins с одинаковыми usid, взять по usid значения refname и rafid из fc_users и вывести по уменьшению сумм.

Мои попытки что-то сделать:
SELECT sum(s), urm as refname, uri as refid FROM
                (SELECT us.refname as urm, us.refid as uri, sum(bal.sum) as s
                    FROM fc_users us, fc_bal_ins bal 
                    WHERE bal.usid = us.id
                    AND bal.date_add >= '1000'
                    AND bal.sum >= '1'
                    AND bal.status = '2'
                    UNION ALL
                    SELECT us.refname as urm, us.refid as uri, sum(dep.sum) as s
                    FROM fc_users us, fc_deposit dep 
                    WHERE dep.usid = us.id
                    AND dep.time >= '1000'
                    AND dep.sum >= '1') as Z
                    GROUP BY refname
                    ORDER BY sum(s) DESC LIMIT 1
  • Вопрос задан
  • 747 просмотров
Подписаться 1 Средний Комментировать
Пригласить эксперта
Ответы на вопрос 1
@VitalyChaikin
SELECT usid, SUM(sum) AS sDEP FROM fc_deposit GROUP BY usid // Депозиты юзера
SELECT usid, SUM(sum) AS sBAL FROM fc_bal_ins GROUP BY usid // Списания юзера

SELECT refname, sDEP-sBAL FROM fc_users
LEFT JOIN (Депозиты юзера) ON условие_соединения
LEFT JOIN (Списания юзера) ON условие_соединения
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы