Я пытаюсь связать эти 5 таблиц вместе, потому что я создаю настенный канал, где сообщения отправляются от пользователя и его друга. Однако мне трудно выбрать все данные из этих 5 таблиц, не имея mysqli с ошибкой. Так выглядит база данных.
У меня есть сообщения TABLES У меня также есть ТАБЛИЦЫ ПОЛЬЗОВАТЕЛЕЙ Наряду с ТАБЛИЦЕЙ ДРУЗЕЙ
Теперь в зависимости от типа сообщения: у меня есть таблица фотографий, как таковая
Проблема заключается в том, как объединить все эти таблицы вместе и вывести их как строки для подачи на стену. Пожалуйста, я ломаю голову
Вы можете комбинировать текущие сообщения пользователей со своими друзьями в одном потоке с несколькими left outer joins
:
select
posts.*,
users.*,
photos.photo_source
from posts
join users
on (users.user_id = posts.user_id)
left join friends
on (friends.user1 = ? and friends.user2 = posts.user_id)
left join photos
on (photos.post_id = posts.id)
where
posts.user_id = ? or not isnull(friends.user2)
(Изменить? На идентификатор пользователя.)
Вы будете получать сообщения, в которых user_id
соответствует текущему пользователю или одному из его друзей (friends.user2
). Таблица photos
также будет выбрана с помощью left outer join
.
left join videos on (videos.post_id = posts.id)
и аналогичные для любых дополнительных необязательных таблиц.
SELECT p.id, p.post_title, p.post_category, p.post_content, u.username
FROM post_table as p, user_table as u, friends_table as f
WHERE u.user_id = p.user_id and (f.user1 = p.user_id or f.user2 = p.user_id)
Это простой способ получить данные из связанной таблицы.
JOIN
не является ниmysqli
, ниPHP
вопросом