SQL-запрос, используя где в поле в другой таблице

Здравствуйте, у меня есть 3 таблицы:

(Это пример пользователей & система сообщений)

пользователи: идентификатор, имя пользователя, пароль

сообщения: id, user_id, content

post_likes: id, user_id, post_id, date

Я хочу получить все посты, которые этот пользователь сделал только ДРУГИМ пользователям. Пользователю могут понравиться все сообщения (его собственный пост и пост другого пользователя).

Другими словами: я не хочу, чтобы его лайки публиковались.

Что-то вроде (это не синтаксис, просто пример, чтобы выразить себя лучше):

ВЫБРАТЬ ИЗ post_likes ГДЕ user_id = 3 И posts.user_id! = 3

2

Решение

Попробуй это

SELECT * FROM post_likes pl
LEFT JOIN posts p ON pl.post_id=p.id
WHERE pl.user_id = 3 AND p.user_id != 3
4

Другие решения

Вы можете попробовать с этим

SELECT * FROM post_likes pls
INNER JOIN posts p ON pls.post_id=p.id
WHERE pls.user_id = 3 AND p.user_id != 3
1

Попробуйте что-то вроде этого:

SELECT *
FROM users u
INNER JOIN post_likes pl ON (u.user_id = pl.user_id)
INNER JOIN posts p ON (p.id = pl.post_id AND p.user_id <> u.id)
WHERE u.id = ...
0

Вы ищете post_likes пользователя 3, где post_id не представляет его собственную запись (то есть, когда post_id НЕ находится в наборе его собственных post_ids):

select *
from post_likes
where user_id = 3
and post_id not in (select id from posts where user_id = 3);
0
По вопросам рекламы [email protected]