Задавайте вопросы, мы ответим
Вы не зашли.
Пытаюсь выбрать e-mail адреса из таблицы users.
Вот работающий запрос:
[SQL]
SELECT
DISTINCT(`users`.`email`)
FROM `users`, `reviews`
WHERE `reviews`.`uid`=`users`.`id`
AND `reviews`.`fid`='80647'
AND `users`.`email` NOT IN (SELECT `email` FROM `reviews_stop_list`)
--AND `users`.`email` NOT IN (SELECT `email` FROM `firm` WHERE `id`='80647' AND `show`=1)
AND `reviews`.`active`=1
[/SQL]
Возвращает нужные адреса.
В закомментированной строчке идет подзапрос (SELECT `email` FROM `firm` WHERE `id`='80647' AND `show`=1), который если выполнить отдельно, возвращает Null. Если же эту строчку раскомментировать в основном запросе, то основной запрос возвращается вместо нужных адресов пустоту.
Подскажите, пожалуйста, с чем это может быть связано?
Неактивен
С тем, что сравнение с NULL всегда дает NULL:
[celestia] root test > select 1 = NULL; +----------+ | 1 = NULL | +----------+ | NULL | +----------+ 1 row in set (0.00 sec) [celestia] root test > select * from z; +------+ | a | +------+ | 1 | | 2 | | 3 | +------+ 3 rows in set (0.00 sec) [celestia] root test > select * from z where a != NULL; Empty set (0.00 sec)
Чтобы сделать то, что Вы ожидаете, нужно добиться того, чтобы подзапрос вернул не
NULL, а пустое множество строк.
Неактивен