Как получить все посты, которые не комментировал определенный пользователь?

Что-то мозг взрывается. Почитал про джоины, но все равно не уверен что именно они мне нужны... Прошу сказать куда смотреть или может показать какой-то простой пример. До этого сталкивался только с простыми выборками данных..

Есть таблица постов - у нее:

id поста,
содержание.

Есть таблица комментариев - у нее:
id автора комментария,
id поста, который комментируется,

Как мне получить все посты, который ни разу не комментировал автор с id=1?

Заранее благодарен!
  • Вопрос задан
  • 105 просмотров
Пригласить эксперта
Ответы на вопрос 4
lidacriss
@lidacriss
wtf
думаю, что примерно такое должно работать
SELECT *
FROM `posts` AS p
WHERE NOT EXISTS (SELECT * FROM `comments` AS c WHERE c.user_id=1 AND p.post_id=c.post_id)

Если в чем-то не прав или где-то ошибся, то пускай знающие поправят)))
UPD
добавил
AND p.post_id=c.post_id
кажется, без этого был бы немного не верный результат :)
Ответ написан
Maksclub
@Maksclub
maksfedorov.ru
SELECT c.id, c.text, u.id as user, p.id as post
FROM comments c
LEFT JOIN users u ON u.id=c.user_id
LEFT JOIN posts p ON p.id=c.post_id
WHERE u.id != 235

Уточнения:
  • 235 — id пользователя
  • таблицу users приджойнил, тк обычно нужна инфа и по пользователю

Использование listView
https://github.com/yiisoft/yii2/blob/master/docs/g...
Ответ написан
@Ampleev Автор вопроса
о! крутая статья, пошел читать, спасибо
Ответ написан
Комментировать
@Alj
SELECT posts.id FROM posts
LEFT JOIN comments ON comments.author = 1 and comments.post = posts.id
WHERE comments.id IS NULL
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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