Как правильно составить SELECT из нескольких таблиц?

Добрый день, помогите или направьте в нужном направлении с запросом такого вида:

SELECT `frk_item` . * , `frk_itemcomment` . *, 
CASE 
WHEN authorId=1 THEN 'Коля' 
END as idname, 
CASE 
WHEN projectId=12 THEN 'TEST' 
END AS grname 
FROM frk_item JOIN `frk_itemcomment` 
USING ( `itemId` ) 
WHERE 
frk_item.itemId in 
(SELECT itemId FROM frk_item WHERE `title` LIKE '%Скрипт рекурсивного мониторинга старых файлов в папках cache%' 
OR `description` LIKE '%Скрипт рекурсивного мониторинга старых файлов в папках cache%') 
OR frk_itemcomment.itemId in 
(SELECT itemId FROM frk_itemcomment WHERE `body` LIKE '%Скрипт рекурсивного мониторинга старых файлов в папках cache%') 
ORDER BY postDate DESC


Есть две таблицы.
В первой содержаться : authorId, projectId, itemId
Во второй содержаться: itemId, body

Проблема этого запроса в том, что если body пустое, то возвращаемый результат - ноль значений (хотя это не правильно)
Если body не пустое, то все замечательно отрабатывает
Нужно чтобы при body как пустом, так и не пустом выбирались значения.
body - тип text
itemId - тип int
  • Вопрос задан
  • 2496 просмотров
Пригласить эксперта
Ответы на вопрос 2
@SashaSkot
Специалист широкого профиля
..... WHERE body LIKE '%TEXT%' OR body IS NULL
Ответ написан
@podvzbzdnul
Непонятно почему, но результаты разные, если убрать ORDER BY.
Ваш WHERE идентичен следующему:
WHERE 
frk_item.`title` LIKE '%Скрипт рекурсивного мониторинга старых файлов в папках cache%' 
OR frk_item.`description` LIKE '%Скрипт рекурсивного мониторинга старых файлов в папках cache%' 
OR frk_itemcomment.body LIKE '%Скрипт рекурсивного мониторинга старых файлов в папках cache%'

с которым все ок.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы