Проблема с запросом MySQL

0

У меня есть три таблицы (пользователь, друзья, сообщения) и два пользователя (user1 и user2).

Когда user1 добавляет user2 в качестве друга, тогда user1 может видеть сообщения пользователя2, как на Facebook. Но только сообщения после даты, когда user1 добавил user2 в качестве друга. Мой запрос выглядит следующим образом:

SELECT * FROM posts p JOIN friends f ON p.userid = f.friendid 
AND s.time >= f.friend_since WHERE f.myid='user1id'

Затем он дает мне все сообщения о пользователе2 после даты с момента добавления в качестве друга. Но проблема в том, что он скрывает сообщения user1s и показывает только сообщения user2s после добавления даты.

user1 должен видеть все свои собственные сообщения и все сообщения пользователя2, которые user2 отправил после даты добавления в качестве друга.

Как я могу это исправить?

Теги:

2 ответа

1

Вы можете присоединиться к результатам другого запроса с помощью UNION, например:

SELECT *
FROM posts p 
JOIN friends f ON p.userid = f.friendid AND s.time >= f.friend_since
WHERE f.myid='user1id'
UNION SELECT *
    From posts p 
    WHERE p.userid='user1id'
  • 0
    я сделал это, но это дает мне ошибку mysql_fetch_array
0

Получить всех друзей ids user1, а затем выбрать все сообщения .. WHERE ( p.userid IN ( FRIENDS_IDS ) AND s.time >= f.friend_since ) OR p.userid = USER_ID Этот способ намного быстрее, чем объединения и объединения в один запрос.

  • 0
    пожалуйста, дайте мне полный запрос, который я не поняла таким образом .... !!
  • 0
    Хорошо, пропустили время там. Но этот запрос ниже должен работать нормально. SELECT * FROM posts AS p LEFT JOIN friends f ON ( p.userid = f.friendid AND p.time >= f.friend_since ) OR ( f.myid = 'user1id' )

Ещё вопросы

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