Как объединить 3 таблицы MYSQL с несколькими условиями и даже если в 3-й таблице нет данных - PullRequest
0 голосов
/ 17 ноября 2018

Мой новый проект - это что-то вроде блога, в котором пользователи могут следить за другими пользователями.

При перечислении всех постов, под каждым постом будет кнопка для подписки / отмены подписки.

Используются таблицы пользователей, постов и подписчиков.следующие:

Таблица USER

id       firstName     lastName
.....................................
1        arun          prasanth
2        ann           antony
3        sruthy        abc
6        John          abc

Таблица POSTS

id    user_id   postname    url
.....................................................
1     2         post1       www.url1.com
2     2         post2       www.url2.com
3     6         post3       www.url3.com
4     3         post4       www.url4.com

Таблица подписчиков

id     user_id    following_users_id    date
..............................................
1     2          1                     2018-01-25
2     2          3                     2018-01-25
3     6          3                     2018-01-25
4     3          6                     2018-01-25

, чтобы вывести список всех сообщений, на которые был похож мой запрос:

SELECT * FROM posts LEFT JOIN users on posts.user_id = users.user_id;

, и он работал нормально, поскольку обе таблицы имели соответствующие строки, и в результате были перечислены оба столбца таблицы свсе данные.

Теперь моя проблема заключается в присоединении к третьей таблице, то есть к таблице последователей.Проблема с таблицей подписчиков состоит в том, что в ней будет только одна строка, которая соответствует текущим зарегистрированным пользователям user_id и follow.user_id.

Я перепробовал все варианты, такие как ЛЕВОЙ ПРАВОЙ ВНУТРЕННЕЙ и ВНЕШНЕЙ СОЕДИНЕНИЙ.но безуспешно.

результат, который я хочу получить:

user.id                         -> xxx
user.firstName                  -> xxx
user.lastName                   -> xxx
posts.id                        -> xxx
posts.user_id                   -> xxx
posts.postname                  -> xxx
posts.url                       -> xxx
followers.id                    -> xxx
followers.user_id               -> **Logged IN Users ID**
followers.following_users_id    -> **posts.user_id**
followers.date                  -> xxx

последователь.ид, последователь.пользователь.идентификатор.following_users_id, последователь.дат должен быть напечатан, только если подписчиков.user_id === ИД пользователя, вошедшего в систему И последователей. following_users_id === posts.user_id имеет значение true.иначе эти столбцы должны быть пустыми.

Есть ли какой-нибудь способ, которым я могу получить данные, как упомянуто выше, или использовать что-то вроде цикла foreach?

...