получение данных MySQL для разных пользователей - PullRequest
0 голосов
/ 06 декабря 2009

Если у меня два пользователя, у одного пользователя много постов в таблице сообщений, т. Е.

postid, post, userid, time(i.e timestamp) 

и у меня есть еще один стол для друзей, т.е.

id, friendid, userid, friend_sinc(i.e timestamp)

Теперь я хочу, чтобы пользователи-друзья видели сообщения пользователя user1 после даты, когда он добавил пользователя user1 в список друзей. Не посты старше даты, на которую он добавил его в друзья. Как я могу сделать это в одном запросе MySQL?

Ответы [ 3 ]

0 голосов
/ 06 декабря 2009
SELECT p.*
FROM post p, friend f
WHERE p.userid = f.userid AND p.time >= f.friend_sinc;

Редактировать: Я думаю, что это может быть истолковано в любом случае как личный идентификатор, но суть ясна.

0 голосов
/ 06 декабря 2009

с штуцером

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>, а затем работает второй запрос и также возвращает ваш собственный пост. Я не думаю, что вы получите дубликаты.

0 голосов
/ 06 декабря 2009

Это будет искать все сообщения от людей после того, как они стали друзьями с пользователем 12:

select     *
from       Posts p
join       Friends f
on         p.userid = f.friendid
and        p.time >= f.friend_since
where      f.userid = 12
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...