Я хочу написать запрос, чтобы получить все сообщения, написанные друзьями, которые у меня есть в приложении.SQL: Получить сообщения, сделанные друзьями
Моя структура таблицы:
Entity:
---------------------
EntityID - PK
FirstName - VARCHAR
LastName - VARCHAR
Friends:
---------------------
FriendID - PK
Friend1 - INT
Friend2 - INT
Post:
---------------------
PostID - PK
EntityId - INT
Message - VARCHAR
выше схема была упрощена для демонстрации структуры.
До сих пор я пробовал следующее, но он будет извлекать сообщения, сделанные пользователем с идентификатором 5
. Как я могу сделать запрос возвратными сообщениями этого пользователя и всех его друзей?
SELECT
P.PostID,
P.Message,
E.FirstName,
E.LastName,
FROM
Entity AS E
JOIN
Friends AS F
ON (E.EntityId = F.Friend1 OR E.EntityId = F.Friend2)
INNER JOIN
Posts AS P
ON P.EntityId = F.Friend1 OR P.Entity_Id = F.Friend2
WHERE
E.EntityId = 5
ORDER BY
P.PostID DESC
Если бы я имел набор данных:
FriendId | Friend1 | Friend2 |
1 8 5
2 9 5
3 5 3
4 2 4
PostId | EntityId | Message
1 5 Hello
2 8 Goodbye
3 2 Morning
Я бы ожидать только hello
и goodbye
должны быть возвращены, как идентификатор пользователя 2
не имеет никакого отношения к 5, но все 5s посты должны быть вернулся. Я смотрел на это некоторое время и, похоже, не понял этого.
Вы игнорируете столбец «Отношение». Если это намеренно, опустите его из вопроса – Amit
Мои приложения, да, столбец отношений отфильтровывает заблокированных пользователей. – Alex
Вы нашли причину, по которой ваш запрос не работал? – Amit