在php mysqli中将3个或更多表链接在一起以创建墙提要

w8biq8rn  于 2021-06-20  发布在  Mysql
关注(0)|答案(2)|浏览(271)

我一直在尝试将这5个表链接在一起,因为我正在创建一个墙式提要,其中的帖子来自用户和他们的朋友。然而,我发现要从这5个表中选择所有数据而不让mysqli出错是很困难的。这就是数据库的样子。
我有一张table

我还有一个用户表

和朋友的table一起

现在根据帖子的类型:我有一张照片表

问题是如何将所有这些表链接在一起,并将它们作为墙提要的行输出。拜托我一直在绞尽脑汁

juzqafwq

juzqafwq1#

你可以将当前用户的帖子和他们朋友的帖子合并成一个包含多个用户的流 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 .

rseugnpd

rseugnpd2#

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)

这只是一种从相关表中获取数据的简单方法。

相关问题