сортировка mysql и между использованием подзапроса - PullRequest
1 голос
/ 10 января 2011

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

"select users.*, (select sum(amount) as camount from donation where donation.uid=users.id) as camount from users where users.confirmed=1  and camount between 3 and 5 order by camount";

Я получаю ошибку: 1064.

Как сделать запрос путем сортировки, используя результат подзапроса?

Ответы [ 2 ]

1 голос
/ 10 января 2011

Я не знаю, что вызывает ошибку, которую вы получаете, но перемещение суб-выбора во внутреннее объединение должно дать те же результаты.

SQL-оператор

select  users.*
        , donation.camount
from    users 
        INNER JOIN (
          select  uid
                  , sum( amount ) as camount 
          from    donation 
          group by
                  uid
        ) donation ON donation.uid = users.id
where   users.confirmed = 1  
        and donation.camount between 3 and 5 
order by 
        donation.camount
0 голосов
/ 10 января 2011

Попробуйте

выберите пользователей. *, (Выберите сумму (d.amount) из пожертвования d, пользователи u, где d.uid = u.id) в качестве количества пользователей, у которых users.confirmed = 1 и количество камер от 3 до 5, упорядочено по количеству камер

...