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

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

Как извлечь записи из таблицы comments таким образом (для текущего пользователя, его можно идентифицировать через $_SESSION['ID']), чтобы в выборку не попали комментарии добавленных им в игнор пользователей?
И по логике, тому кого текущий пользователь добавил в игнор, тоже не должны быть видны комментарии данного пользователя.
Можно ли одним запросом реализовать подобную выборку?
  • Вопрос задан
  • 55 просмотров
Решения вопроса 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' - тут подставляем переменную, которая содержит идентификатор текущего пользователя, для которого идет получение комментариев на сайте
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы