Задать вопрос

Как правильно сделать выборку из БД из двух таблиц?

Добрый день, уважаемые программисты. Нужна помощь знатоков. Суть вопроса:
Есть 2 таблицы 1- с комментариями и 2 - со списком игнор-лист пользователей.
Структура такая: ignore
userid - id пользователя, который добавил в игнор
useridWho - id пользователя, которого добавил в игнор другой пользователь (userid )
таблица comments
user_id - id пользователя, который создал комментарий.

Как извлечь записи из таблицы comments таким образом (для текущего пользователя, его можно идентифицировать через $_SESSION['ID']), чтобы в выборку не попали комментарии добавленных им в игнор пользователей?
И по логике, тому кого текущий пользователь добавил в игнор, тоже не должны быть видны комментарии данного пользователя.
Можно ли одним запросом реализовать подобную выборку?
  • Вопрос задан
  • 55 просмотров
Подписаться 1 Простой Комментировать
Решения вопроса 1
@alexalexes
ВЫБРАТЬ (атрибуты таблицы из таблицы комментариев) ИЗ таблицы комментариев ГДЕ КодПользователя НЕ СУЩЕСТВУЕТ в подзапросе (выборки из таблицы игнор-листа с таким же кодом пользователя).

Переводите это предложение буквально на синтаксис SQL - получите решение.
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
Rsa97
@Rsa97
Для правильного вопроса надо знать половину ответа
LEFT JOIN ... WHERE IS NULL или WHERE NOT IN (SELECT ...)
И по логике, тому кого текущий пользователь добавил в игнор, тоже не должны быть видны комментарии данного пользователя.
IMHO, неправильная логика.
Ответ написан
Комментировать
MirDj
@MirDj Автор вопроса
По итогу, может кому пригодится. Решение корректное, на основе моих данных:
SELECT user_id FROM `comments`  WHERE user_id NOT IN(SELECT useridWho
FROM `ignore`
WHERE userid = '6482' and useridWho = user_id) and news_id = '77278'  order by id DESC limit 30

Структура такая: ignore
userid - id пользователя, который добавил в игнор
useridWho - id пользователя, которого добавил в игнор другой пользователь (userid )
таблица comments
user_id - id пользователя, который создал комментарий
'6482' - тут подставляем переменную, которая содержит идентификатор текущего пользователя, для которого идет получение комментариев на сайте
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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