Показывать сообщения пользователей, на которых я подписан, но показывать и мои сообщения тоже

Я работаю над небольшим сайтом, где люди могут следовать друг за другом. На сайте есть новостная лента, где пользователи могут видеть обновления других пользователей, за которыми они следят. Проблема в том, что я вижу только сообщения других пользователей, а не мои. Я хочу, чтобы текущий пользователь мог видеть свои сообщения слишком упорядоченными в сообщениях других пользователей. Что-то вроде стены Facebook.
Я пробовал множество разных запросов и php, но я получаю сообщения только от других пользователей, или когда мне удается вытащить свои сообщения, для каждого пользователя, следующего за мной, публикуются повторяющиеся сообщения.

У меня есть 3 таблицы «участники», «пост» и «следовать». Таблица членов содержит идентификатор пользователя, имя и фамилию. Стол постов содержит идентификатор пользователя (FromID в таблице), проиндексированный для членов UserID и поста от пользователя. В следующей таблице есть 3 столбца FollowID, Followed и Follower, и Followed, и Follower являются индексами для членов UserID.

На данный момент я использую этот запрос:

$query= "SELECT Post.*, members.*, follow.* FROM Post
INNER JOIN members ON Post.FromID=members.UserID
LEFT JOIN follow ON members.UserID=follow.Followed
WHERE Post.FromID='$user' OR follow.FollowerID='$user'
ORDER BY Post.date DESC, Post.time DESC";

$ user — это UserID текущего вошедшего в систему пользователя.
Этот запрос возвращает все сообщения, которые я хочу, но проблема в том, что мои сообщения показываются / n раз для каждого пользователя, который следует за мной.

Я действительно был бы признателен за доброту к тому, кто дал мне несколько указаний, что я делаю неправильно. Спасибо

0

Решение

Проблема в вашем $ user. В настоящее время происходит то, что у вас есть условие ИЛИ в предложении where. И вы пытаетесь получить либо ваши данные, либо данные ваших подписчиков.

Мое решение для вас будет удалить $ user из вашего запроса. Таким образом, у вас будет только список данных подписчиков. Сделайте другой запрос для ваших сообщений, а затем при отображении сортируйте их по дате и времени, чтобы у вас были сообщения с другими подписчиками.

Чтобы ваши посты и посты в одном запросе.

Используйте союз. Подобно :

(Запрос ваших сообщений ЗАКАЗАТЬ ПО ДАТЕ)
UNION
(Запрос подписчиков постов ORDER BY по дате);

Также проверьте использование UNION в w3schools.

Надеюсь это поможет

0

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

Я думаю, что этот запрос может быть легче понять:

$query = "SELECT * FROM Post,members,follow

WHERE

Post.FromID=members.UserID
AND
members.UserID=follow.FollowedAND (    Post.FromID='$user' OR  follow.FollowerID='$user')

ORDER BY Post.date DESC, Post.time DESC";
0

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