Как выполнить несколько табличных операций в 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
часть ушла? Это потому, что если нет строк для объединения, то ничего не будет объединено, и строки будут удалены из результата;)