Нужно выбрать количество комментариев к заказу с id 286, которые непрочитаны пользователем с id 1, пробую сл. запрос:
SELECT COUNT( `o`.`id` ) AS count
FROM `orders` `o`
WHERE `o`.`id` =286
AND ( EXISTS (
SELECT *
FROM `order_comments` `oc`
WHERE `oc`.`order_id` = `o`.`id`
) AND NOT
EXISTS (
SELECT *
FROM `order_comment_views` `ocv`
WHERE `ocv`.`comment_id` = `oc`.`id`
AND `ocv`.`user_id` =1
)
)
но он выполняется с ошибкой: "#1054 - Unknown column 'oc.id' in 'where clause'". Почему так?
Пробую так:
SELECT COUNT( `o`.`id` ) AS count
FROM `orders` `o`
WHERE `o`.`id` =286
AND (
EXISTS (
SELECT *
FROM `order_comments` `oc`
WHERE `oc`.`order_id` = `o`.`id`
AND NOT
EXISTS (
SELECT *
FROM `order_comment_views` `ocv`
WHERE `ocv`.`comment_id` = `oc`.`id`
AND `ocv`.`user_id` =1
)
)
)
но результат неверный..
P.S. Решил проблему так:
SELECT COUNT(`oc`.`id`) AS count
FROM `orders` `o`, `order_comments` `oc`
WHERE `o`.`id` =286 AND `o`.`id`= `oc`.`order_id` AND NOT EXISTS (SELECT * FROM `order_comment_views` `ocv` WHERE `ocv`.`comment_id` = `oc`.`id` AND `ocv`.`user_id` = 1)