php mysql关联表_PHP mysql如何关联三个表显示来自不同表的输出

如果我理解正确,你想要一个带有feed表的外连接(为了保留所有帖子,即使没有相关的提要),然后GROUP BY post.pid,以便将每个帖子的所有这些提要合并在一起,并选择所需的信息.

我使用MySQL的GROUP_CONCAT()函数来获取所有用户(最多group_concat_max_len)的逗号分隔列表

给定帖子的“提要”(如果需要,可以使用SEPARATOR修饰符更改分隔符).

SELECT users.firstname, users.lastname,

users.screenname, posts.post_id, posts.user_id,

posts.post, posts.upload_name,

posts.post_type, posts.date_posted,

COUNT(feeds.user_id) AS friends, -- number of "likes"

SUM(feeds.user_id = ?) AS you, -- did I like this?

GROUP_CONCAT(feeds.user_id) -- who likes it?

FROM website.users users

INNER JOIN website.posts posts ON (users.user_id = posts.user_id)

LEFT JOIN website.feeds feeds ON (posts.post_id = feeds.post_id)

GROUP BY posts.pid

ORDER BY posts.pid DESC

UPDATE

要获得“喜欢”帖子的用户的全名,不包括自己,需要第二次加入用户表:

SELECT users.firstname, users.lastname,

users.screenname, posts.post_id, posts.user_id,

posts.post, posts.upload_name,

posts.post_type, posts.date_posted,

COUNT(feeds.user_id) AS friends, -- number of "likes"

SUM(feeds.user_id = ?) AS you, -- did I like this?

GROUP_CONCAT(

CASE WHEN NOT likes.user_id = ? THEN -- exclude self

CONCAT_WS(' ', likes.firstname, likes.lastname) -- full names

END

)

FROM website.users users

INNER JOIN website.posts posts ON (users.user_id = posts.user_id)

LEFT JOIN website.feeds feeds ON (posts.post_id = feeds.post_id)

LEFT JOIN website.users likes ON (feeds.user_id = likes.user_id)

GROUP BY posts.pid

ORDER BY posts.pid DESC

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值