2017-02-01 3 views
1

У меня есть users таблица и 3 таблицы с доходами от пользователей.
То, что я пытаюсь сделать, это выбрать 10 лучших пользователей с наибольшей прибылью на основе этих 3 таблиц.
Я борюсь с этим запросом со вчерашнего дня, и я не могу заставить его работать.
Я хочу суммировать эти 3 таблицы заработка как общую сумму.Получите полный доход от 3 таблиц

Любая помощь в этом, пожалуйста?

SELECT 
    users.first_name, 
    users.last_name, 
    (select SUM(`value`) from `earnings1` where users.id = earnings1.user) as earnings1, 
    (select SUM(`value`) from `earnings2` where users.id = earnings2.user) as earnings2, 
    (select SUM(`value`) from `earnings3` where users.id = earnings3.user) as earnings3, 
    (earnings1 + earnings2 + earnings3) as total  
FROM users 
GROUP BY users.id 
ORDER BY total DESC  
LIMIT 10 

Ошибка я получаю прямо сейчас:

Неизвестный столбец 'earnings1' в 'списке поля'

+0

Какая ошибка вы получаете? – MontyPython

+0

прямо сейчас 'Unknown column 'earnings1' в 'списке полей'' – divHelper11

+0

И каковы столбцы в таблице 'earnings1'? –

ответ

1

Это должно работать для вас:

select first_name, last_name, 
(earnings1 + earnings2 + earnings3) total from 
(select users.id, users.first_name, users.last_name, 
(select sum(`value`) from `earnings1` where users.id = earnings1.user) as earnings1, 
(select sum(`value`) from `earnings2` where users.id = earnings2.user) as earnings2, 
(select sum(`value`) from `earnings3` where users.id = earnings3.user) as earnings3 
from users group by 1,2,3) t 
order by 3 desc limit 10 

t - это имя, которое вы даете результирующему набору из внутреннего запрос. он несколько похож на общее табличное выражение, но не точно. MySQL обязывает вас дать этому набору результатов имя.

1,2,3 вы можете либо пользователь 1,2,3 или вы можете использовать имена столбцов users.id, users.first_name, users.last_name как ваши группирования столбцов. 1,2,3 означает первый, второй и третий столбцы в вашем заявлении select.

+0

Спасибо за ваш ответ :) Не могли бы вы рассказать мне, откуда «1,2,3»? И это 't', это то же самое, что и' AS t'? – divHelper11

+0

@ divHelper11 - Я сделал редактирование, пожалуйста, проверьте сейчас. – MontyPython

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