получение данных MySQL для разных пользователей

0

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

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

и у меня есть другая таблица для друзей i.e

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

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

  • 0
    Я продезинфицировал твой текст. Предложения начинаются с заглавных букв и заканчиваются одной (1) точкой. Вопросы заканчиваются знаком вопроса ? , I должен быть написан в верхнем регистре. Если вы сформулируете свой вопрос более серьезным образом (т.е. приложите больше усилий к нему), вы будете побуждать других больше отвечать (то есть они будут прилагать больше усилий). Надеюсь, вы научитесь этому в будущем. Также см. Catb.org/esr/faqs/smart-questions.html
Теги:

3 ответа

0

С объединением

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
    это дает мне следующую ошибку ------------------------------------------- ----------------------- mysql_fetch_array (): предоставленный аргумент не является допустимым ресурсом результатов MySQL -------------- -------------------------------------------------- -
  • 0
    С концептуальной точки зрения запрос в порядке, но вам нужно использовать p. * Вместо *, чтобы объединение работало. Если вы не хотите объединение, используйте трюк, который я упомянул, то есть чтобы пользователь был его собственным другом.
Показать ещё 1 комментарий
0

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

select     *
from       Posts p
join       Friends f
on         p.userid = f.friendid
and        p.time >= f.friend_since
where      f.userid = 12
  • 0
    это вызывает у меня следующую проблему: user12 также не может видеть свои старые сообщения, но может видеть новые сообщения ........... !! и другая проблема заключается в том, что если у user2 есть 4 друзей и 1 сообщение, оно показывает его 4 раза ..... т.е. 1. post 1 2. post 1 3. post 1
0
SELECT p.*
FROM post p, friend f
WHERE p.userid = f.userid AND p.time >= f.friend_sinc;

Edit: Я думаю, это можно было бы интерпретировать в любом случае, каким является persond id, но точка понятна.

  • 0
    это вызывает у меня следующую проблему: user1 также не может видеть свои старые сообщения, но может видеть новые сообщения ........... !! и другая проблема заключается в том, что если у user2 есть 4 друзей и 1 сообщение, оно показывает его 4 раза ..... т.е. 1. post 1 2. post 1 3. post 1
  • 0
    Вы говорите о том, что user1 пытается увидеть свои собственные сообщения? Следует использовать другой запрос, поскольку он пытается сделать что-то другое. Используйте DISTINCT для удаления дубликатов.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню