Связать 3 или более таблиц вместе в PHP MYSQLI для создания настенного канала - PullRequest
0 голосов
/ 04 июля 2018

Я пытался связать эти 5 таблиц вместе, потому что я создаю настенный канал, где сообщения получают от пользователя и его друга. Однако я считаю, что трудно выбрать все данные из этих 5 таблиц, не имея mysqli с ошибкой. Так выглядит база данных.

У меня есть СТОЛЫ СТОЛОВ This is the posts table, in it it specifies the post id, user id and the type of posts: image, video, or story У меня также есть ТАБЛИЦА ПОЛЬЗОВАТЕЛЕЙ The users information is stored here Вместе с СТОЛОМ ДРУЗЕЙ

Теперь в зависимости от типа поста: у меня есть таблица фотографий, как таковая The photos table has the post id, user id and other information

Проблема в том, как связать все эти таблицы вместе и вывести их в виде строк для настенного канала. Пожалуйста, я ломал голову

Ответы [ 2 ]

0 голосов
/ 04 июля 2018

Вы можете объединить сообщения текущего пользователя с сообщениями его друзей в один поток с несколькими 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)

(Изменить? На ID пользователя.)

Вы будете получать сообщения, в которых user_id соответствует текущему пользователю или одному из его друзей (friends.user2). Таблица photos также будет выбрана с помощью left outer join.

0 голосов
/ 04 июля 2018
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) 

Это простой способ получения данных из связанной таблицы.

...