Как выполнить несколько табличных операций в MySQL?

Я просто хочу выполнить несколько табличных операций в одном запросе. Запрос:

    select name,sno , id  as ids ,(select sum(amount) from client_credits 
where user_id = ids) As total  from clients where sno = '4' and total > '0'

Этот запрос не работает, когда я пытаюсь использовать ** total > 0 **. Есть ли другие возможные способы? Пожалуйста, помогите мне.

1 ответ

Решение

total это псевдоним. Псевдонимы не разрешаются, когда WHERE пункт достигнут.

Пытаться: where sno = 4 having total > 0

В качестве альтернативы и более эффективно:

SELECT `c`.`name`, `c`.`sno`, `c`.`id`, SUM(`ccr`.`amount`) AS `total`
FROM `clients` AS `c`
JOIN `client_credits` AS `ccr` ON `c`.`id`=`ccr`.`user_id`
WHERE `c`.`sno` = 4
GROUP BY `c`.`id`

Обратите внимание, как total > 0 часть ушла? Это потому, что если нет строк для объединения, то ничего не будет объединено, и строки будут удалены из результата;)

Другие вопросы по тегам