Проблема с SQL-запросом (работа с 3 таблицами)

0

В настоящее время я работаю над социальной сетью. Я решил установить отношения с друзьями (например, FB) вместо следующих пользователей (например, TW), и вот моя проблема.

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

Таблица друзей

Почтовый стол

Таблица пользователей

Я хотел бы сделать это, чтобы, если у пользователя нет друзей (или просто отправлено приглашение [friends_type == 1 в таблице друзей]), отображаются только его сообщения.

Моя идея для этого: SELECT * FROM users, posts, friends WHERE friends_status=4, но когда у пользователя есть друзья, я хотел бы видеть сообщения от него и его друзей.

И, конечно, это мой SQL-запрос, который я сделал: SELECT * FROM posts, users, friends WHERE user_id=post_author AND friends_status=4 AND (friend_friendid=user_id OR friend_userid=user_id) ORDER BY post_id DESC.

В принципе, я хочу добиться того, что Facebook имеет на домашней странице (бесконечная шкала времени, где вы можете прокручивать и прокручивать). Мой вопрос: как построить этот запрос?

Теги:
facebook-wall

1 ответ

0

Это один из способов, используя подзапрос, чтобы найти друзей:

select *
from posts
where post_author = {user_id}
   or post_author in
   (
     select friend_friendid from friends
     where friend_userid = {user_id}
       and friend_status != 1
   )

Ещё вопросы

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