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

В настоящее время я работаю в социальной сети. Я решил завязать дружеские отношения (как это делает 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 имеет на главной странице (бесконечная шкала времени, где вы можете прокручивать и прокручивать). Мой вопрос: как построить этот запрос?

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
)
0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]