Если у меня есть два пользователя, у одного пользователя есть много сообщений в таблице столбец i.e
postid, post, userid, time(i.e timestamp)
и у меня есть другая таблица для друзей i.e
id, friendid, userid, friend_sinc(i.e timestamp)
Теперь я хочу, чтобы пользователь-пользователь видел сообщения пользователя1 после даты, когда он добавил пользователя1 в качестве друга. Не должности старше, чем дата, он добавил его как друга. Как я могу сделать это в одном запросе MySQL?
С объединением
select p.* from posts p where p.userid = <my_user_id>
union
select p.* from posts p, friends f where
p.userid = f.friendid and
f.userid = <my_user_id> and
p.time >= f.friend_since
Или вы считаете себя своим другом, т.е. есть запись в friend
с friendid = <my_user_id> and userid = <my_user_id> and friend_since = <date user was created>
, а затем второй запрос работает и возвращает ваш собственный пост. Я не думаю, что вы получаете дубликаты.
Это будет искать все сообщения от людей после того, как они подружились с пользователем 12:
select *
from Posts p
join Friends f
on p.userid = f.friendid
and p.time >= f.friend_since
where f.userid = 12
SELECT p.*
FROM post p, friend f
WHERE p.userid = f.userid AND p.time >= f.friend_sinc;
Edit: Я думаю, это можно было бы интерпретировать в любом случае, каким является persond id, но точка понятна.
?
,I
должен быть написан в верхнем регистре. Если вы сформулируете свой вопрос более серьезным образом (т.е. приложите больше усилий к нему), вы будете побуждать других больше отвечать (то есть они будут прилагать больше усилий). Надеюсь, вы научитесь этому в будущем. Также см. Catb.org/esr/faqs/smart-questions.html