SQLinfo.ru - Все о MySQL

Форум пользователей MySQL

Задавайте вопросы, мы ответим

Вы не зашли.

#1 04.06.2021 14:19:00

lutsk
Участник
Зарегистрирован: 17.01.2013
Сообщений: 15

WHERE по вложеному SELECT

Подскажите, возможно ли сделать выборку по условию вложенного селекта "unreaded" в запросе?

SELECT
    g.*,
    COUNT(m.id) AS count_messages,
    (SELECT COUNT(*) FROM `la3po_abc_messages` WHERE `group_id` = `g`.`id` AND `idTo` = 895 AND `is_read` = 0) AS unreaded
FROM `la3po_abc_message_group` AS `g`
LEFT JOIN `la3po_abc_messages` AS `m` ON `m`.`group_id` = `g`.`id`
WHERE (`g`.`created_by` = 895 OR `g`.`recipient` = 895) AND `g`.`type` = 'user' AND unreaded = 0
GROUP BY `g`.`id`
ORDER BY `g`.`created` asc LIMIT 20

unreaded = 0 вызывает ошибку неизвестного поля.

Неактивен

 

#2 04.06.2021 22:58:46

rgbeast
Администратор
MySQL Authorized Developer and DBA
Откуда: Москва
Зарегистрирован: 21.01.2007
Сообщений: 3860

Re: WHERE по вложеному SELECT

Условие unreaded = 0 можно указать в разделе HAVING.

HAVING должен быть в запросе после GROUP BY, поэтому нужно будет или убрать группировку или сделать запрос без группировки, но поместить его в виде подзапроса в поле FROM внешнего запроса с группировкой.

Неактивен

 

Board footer

Работает на PunBB
© Copyright 2002–2008 Rickard Andersson