Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / MySQL Новый топик    Ответить
 ORDER по вложеному SELECT  [new]
Lutsk
Member

Откуда:
Сообщений: 32
Подскажите, возможно ли сделать выборку по условию вложенного селекта "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 [b]unreaded[/b]
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 вызывает ошибку неизвестного поля.

PS. В теме не "ORDER", а "WHERE", сорри.

Сообщение было отредактировано: 4 июн 21, 14:09
4 июн 21, 14:13    [22331370]     Ответить | Цитировать Сообщить модератору
 Re: ORDER по вложеному SELECT  [new]
Akina
Member

Откуда: Зеленоград, Москва, Россия
Сообщений: 21181
Алиас исходного поля нельзя использовать во WHERE - его в момент выполнения WHERE просто не существует.
Либо вместо имени надо использовать выражение (только в случае запроса без GROUP BY), либо переместить условие в HAVING.

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' 
GROUP BY `g`.`id`
HAVING unreaded = 0
ORDER BY `g`.`created` asc LIMIT 20


PS. Но вообще запрос синтаксически некорректен, и если выполнится, то только благодаря расширению MySQL. При этом бОльшая часть значений, полученных выходном наборе из la3po_abc_message_group, не имеет смысла.

Сообщение было отредактировано: 4 июн 21, 17:08
4 июн 21, 17:17    [22331510]     Ответить | Цитировать Сообщить модератору
 Re: ORDER по вложеному SELECT  [new]
Lutsk
Member

Откуда:
Сообщений: 32
Хм. А в чем именно синтаксически некорректен? Не везде обратные кавычки?
4 июн 21, 18:05    [22331540]     Ответить | Цитировать Сообщить модератору
 Re: ORDER по вложеному SELECT  [new]
Akina
Member

Откуда: Зеленоград, Москва, Россия
Сообщений: 21181
Немного неточно. Синтаксически некорректен, если g.id уникален. Иначе он некорректен логически. ONLY_FULL_GROUP_ BY.
4 июн 21, 23:06    [22331669]     Ответить | Цитировать Сообщить модератору
Все форумы / MySQL Ответить