Задать вопрос
@Farrien
Tell me who

Почему не работает WHERE IN условие?

Есть таблицы:
  1. новости
  2. юзеры (people)
  3. рубрики (hubs)
  4. подписки юзеров на рубрики (hub_subscriptions)

Я хочу отфильтровать новости так, чтобы показывались только из тех рубрик, на которые юзер подписался.
По странным причинам этот запрос показывает именно новости из рубрик, на которые (ВНИМАНИЕ) уже подписывались, а затем отписались.
SELECT n.id, n.title, n.author_id, n.image_res, p.name, h.name
↵		FROM news n
↵		LEFT JOIN people p ON n.author_id=p.id
↵		LEFT JOIN hubs h ON n.hub_id=h.id
↵		WHERE n.visible=1 AND n.hub_id IN (SELECT hub_id FROM hub_subscriptions WHERE user_id=%айди юзера% AND active_subscription=1)
↵		ORDER BY n.added_time DESC
↵		LIMIT 0, 12

Ну то есть если в таблице hub_subscriptions есть запись о подписке пользователя со значением active_subscription = 0

P.S. Когда-то давно я писал запросы WHERE IN и вроде получалось. С этим запросом для меня все загадочно.
  • Вопрос задан
  • 51 просмотр
Подписаться 1 Простой 1 комментарий
Решения вопроса 1
@Farrien Автор вопроса
Tell me who
Разобрался!
Оказывается запрос был правильным, просто в таблице hub_subscriptions тип данных у active_subscription была enum и он не опознавал просто active_subscription=1. Надо было прописывать с одинарных кавычках active_subscription='1'.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

Похожие вопросы
xRocket Москва
от 3 000 до 4 000 $
div. Ставрополь
от 50 000 до 120 000 ₽
Lachestry Таганрог
от 170 000 до 200 000 ₽