@mars130

В чём ошибка в SQL запросе?

Доброго времени суток уважаемые коллеги, столкнулся с проблемой вывода не прочитанных новостей на сайте. Имеется модуль, который выводит новости из таблицы `news`, ID которых не находится в таблице `viewed_news` выводилось это по запросу:
SELECT * FROM `news` WHERE `id`  NOT IN (SELECT `id_news` FROM `viewed_news` WHERE `id_user` = '1') ORDER BY `news`.`date` DESC

Но т.к. на платформе появилось 2ве новых роли, это партнёры и пользователи, собственно для которых новости должны быть разные и появилась проблема составления SQL запроса. Пожалуйста подскажите как это можно реализовать ?

(В таблицу `news` добавил столбец `recipient` которому при добавлении новости присваивается значение (user- для пользователей, partner - для партнёров, all- для всех) вот пример как я попробовал вывести не прочитанные новости для пользователя с ID 1:
SELECT * FROM `news` WHERE `recipient` = 'user' OR `recipient` = 'all' AND `id`  NOT IN (SELECT `id_news` FROM `viewed_news` WHERE `id_user` = '1') ORDER BY `news`.`date` DESC


Но к сожалению ничего не получается ((( кто хорошо разбирается в SQL подскажите пожалуйста как решить данную проблему?
  • Вопрос задан
  • 68 просмотров
Решения вопроса 1
@grisha2217
нельзя писать без скобочек OR и AND в одном месте.

SELECT * FROM `news` WHERE (`recipient` = 'user' OR `recipient` = 'all') AND `id`  NOT IN (SELECT `id_news` FROM `viewed_news` WHERE `id_user` = '1') ORDER BY `news`.`date` DESC
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

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