В моем проекте есть две таблицы.
Таблица POSTS
p_id p_user_id p_title p_description
.................................................
1 1 Post 1 lorem ipsum * 1
2 1 Post 2 lorem ipsum * 2
3 2 Post 3 lorem ipsum * 3
4 3 Post 4 lorem ipsum * 4
Таблица FOLLOWERS
f_id f_following_users_id f_followed_users_id f_date
...................................................................
1 2 1 2018-01-25
2 2 3 2018-01-25
3 3 2 2018-01-25
теперь я хочу получить список всех пользователей в зависимости от идентификатора пользователя, вошедшего в систему.идентификатор пользователя, вошедшего в систему, взят из $ _SESSION ['user_id'].
Я хочу получить следующий результат:
Первый случай: , если вы вошли в системуuser_id равен 1, т. е. $ _SESSION ['user_id'] = 1 или follow_users_id во 2-й таблице равно 1, результат должен быть:
Array
(
[0] => Array
(
[p_id] => 1
[p_user_id] => 1
[p_title] => Post 1
[p_description] => lorem ipsum * 1
[f_id] =>
[f_following_users_id] =>
[f_followed_users_id] =>
[f_date] =>
)
[1] => Array
(
[p_id] => 2
[p_user_id] => 1
[p_title] => Post 2
[p_description] => lorem ipsum * 2
[f_id] =>
[f_following_users_id] =>
[f_followed_users_id] =>
[f_date] =>
)
[2] => Array
(
[p_id] => 3
[p_user_id] => 2
[p_title] => Post 3
[p_description] => lorem ipsum * 3
[f_id] =>
[f_following_users_id] =>
[f_followed_users_id] =>
[f_date] =>
)
)
последние четыре поля массива должны быть пустыми какпользователь с user_id ни за кем не последовал
Второй случай: если вошел в систему user_id user = 2, т. е. $ _SESSION ['user_id'] = 2 или follow_users_id во 2-й таблице2, результат должен быть:
Array
(
[0] => Array
(
[p_id] => 1
[p_user_id] => 1
[p_title] => Post 1
[p_description] => lorem ipsum * 1
[f_id] => 1
[f_following_users_id] => 2
[f_followed_users_id] => 1
[f_date] => 2018-01-25
)
[1] => Array
(
[p_id] => 2
[p_user_id] => 1
[p_title] => Post 2
[p_description] => lorem ipsum * 2
[f_id] => 1
[f_following_users_id] => 2
[f_followed_users_id] => 1
[f_date] => 2018-01-25
)
[2] => Array
(
[p_id] => 3
[p_user_id] => 2
[p_title] => Post 3
[p_description] => lorem ipsum * 3
[f_id] =>
[f_following_users_id] =>
[f_followed_users_id] =>
[f_date] =>
)
)
* Первые четыре поля первого 2 массива должны быть заполнены первой строкой таблицы последователей, так как пользователь с идентификатором пользователя последовал за пользователем с user_id 1. И 4 строки 3-госообщение должно быть пустым, так как пользователь с user_id 2 не следует за пользователем с user_id 2 ***
Третий случай: если вошел в систему user_id user 3, то есть $ _SESSION ['user_id']= 3 или follow_users_id во 2-й таблице равно 3, результат должен быть:
Array
(
[0] => Array
(
[p_id] => 1
[p_user_id] => 1
[p_title] => Post 1
[p_description] => lorem ipsum * 1
[f_id] =>
[f_following_users_id] =>
[f_followed_users_id] =>
[f_date] =>
)
[1] => Array
(
[p_id] => 2
[p_user_id] => 1
[p_title] => Post 2
[p_description] => lorem ipsum * 2
[f_id] =>
[f_following_users_id] =>
[f_followed_users_id] =>
[f_date] =>
)
[2] => Array
(
[p_id] => 3
[p_user_id] => 2
[p_title] => Post 3
[p_description] => lorem ipsum * 3
[f_id] => 3
[f_following_users_id] => 3
[f_followed_users_id] => 2
[f_date] => 2018-01-25
)
)
Первый2 массива 4 последний столбец должен быть пустым, так как User_id 3 не подписан на эти сообщения пользователей.но третий массив последних четырех столбцов должен быть заполнен, так как user_id 3 следует user_id 2.
Я искал все решения, но тщетно.Может быть, я не смог найти правильный пост, как это сделать, даже в stackoverflow.
MySQL запрос, который я пробовал:
SELECT * FROM posts AS p LEFT JOIN followers AS f ON p.p_user_id=f.f_followed_users_id WHERE f.f_followed_users_id = p_user_id AND f.f_following_users_id = 1 ORDER BY p.p_id
, но я не получаю желаемых результатов.Я пытался с левым соединением, правым соединением внешних и внутренних соединений.Но безуспешно.Могу ли я присоединиться к этим 2 столам, как я хочу?Если да, пожалуйста, помогите мне, иначе дайте мне знать, как я могу решить эту проблему.Извините за столь большой вопрос.Я довольно новичок в SO, поэтому не знаю, как задавать вопросы здесь.Любая помощь будет оценена.