SQL WHERE NOT NULL по-прежнему возвращает пустые строки - PullRequest
0 голосов
/ 13 декабря 2018

У меня есть запрос, в котором я выбираю все записи, если они не равны NULL, но я все еще получаю результаты со строками NULL.

Это мой запрос:

SELECT cnt.id, cnt.title as content_title, cnt.alias as content_alias, cnt.images, cnt.introtext, cnt.catid, cat.title as cat_title, cat.alias as cat_alias,
MAX(case when f.field_id = 2 then f.value end) as regio
FROM snm_content cnt
LEFT JOIN snm_categories cat
ON cat.id = cnt.catid
LEFT JOIN snm_fields_values f
ON cnt.id = f.item_id 
WHERE cnt.id IS NOT NULL AND f.value LIKE '%Zeeland%'

enter image description here

Вы можете видеть часть IS NOT NULL, но моя база данных по-прежнему показывает все строки с NULL, почему это так?

1 Ответ

0 голосов
/ 13 декабря 2018

Предположительно, вы хотите запрос, подобный следующему:

SELECT cnt.id, cnt.title as content_title, cnt.alias as content_alias, cnt.images, cnt.introtext, cnt.catid, cat.title as cat_title, cat.alias as cat_alias,
       MAX(case when f.field_id = 2 then f.value end) as regio
FROM snm_content cnt LEFT JOIN
     snm_categories cat
     ON cat.id = cnt.catid LEFT JOIN
     snm_fields_values f
     ON cnt.id = f.item_id AND f.value LIKE '%Zeeland%'
WHERE cnt.id IS NOT NULL
GROUP BY cnt.id;

У вас есть запрос агрегации без GROUP BY.Это было бы ошибкой в ​​любой другой базе данных.Если мы предположим, что cnt.id уникален, то вы можете безопасно агрегировать по этому.

Другая проблема - сравнение с f.value.Это должно быть в предложении ON, если вы действительно намереваетесь LEFT JOIN.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...