Здравствуйте, у меня есть 3 таблицы:
(Это пример пользователей & система сообщений)
пользователи: идентификатор, имя пользователя, пароль
сообщения: id, user_id, content
post_likes: id, user_id, post_id, date
Я хочу получить все посты, которые этот пользователь сделал только ДРУГИМ пользователям. Пользователю могут понравиться все сообщения (его собственный пост и пост другого пользователя).
Другими словами: я не хочу, чтобы его лайки публиковались.
Что-то вроде (это не синтаксис, просто пример, чтобы выразить себя лучше):
ВЫБРАТЬ ИЗ post_likes
ГДЕ user_id
= 3 И posts.user_id! = 3
Попробуй это
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
Вы можете попробовать с этим
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
Попробуйте что-то вроде этого:
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 = ...
Вы ищете 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);