在mysql中如何从不同的关系表中获取多个数据
我有3个关系表:users、posts和repost 在转发表中,我有以下字段:用户id(转发帖子的用户)和,帖子id 在posts表中,我有字段:id,posts,和用户id 在用户表中,我有字段:id和名字 以下是我想要获得的数据:在mysql中如何从不同的关系表中获取多个数据,mysql,sql,join,left-join,Mysql,Sql,Join,Left Join,我有3个关系表:users、posts和repost 在转发表中,我有以下字段:用户id(转发帖子的用户)和,帖子id 在posts表中,我有字段:id,posts,和用户id 在用户表中,我有字段:id和名字 以下是我想要获得的数据: 邮报 发布的原始用户 转载帖子的记者或用户 到目前为止,我只有以下问题: SELECT p.post, u.first_name as 'Retweeter' FROM reposts r LEFT JOIN users u ON u.id = r.u
SELECT
p.post,
u.first_name as 'Retweeter'
FROM reposts r
LEFT JOIN users u
ON u.id = r.user_id
LEFT JOIN posts p
ON p.id = r.post_id
在这段代码中,我可以得到帖子和转发帖子的用户。但是,如何使用reposts表中的post_id字段获取发布帖子的原始用户或原始用户的详细信息呢
多谢各位 您需要在
用户
表上再加入一次才能获得原始海报名称
SELECT
ou.first_name originalPoster,
p.post,
u.first_name as 'Retweeter'
FROM reposts r
LEFT JOIN users u
ON u.id = r.user_id
LEFT JOIN posts p
ON p.id = r.post_id
LEFT JOIN users ou
on p.user_id = ou.id
您必须加入
用户
两次,一次针对帖子
,一次针对转发
。如果要包含尚未重新发布的帖子,应使用posts
启动FROM
子句,然后执行左连接
SELECT p.post,
up.first_name,
urp.first_name
FROM posts p
LEFT JOIN users up
ON up.id = p.user_id
LEFT JOIN reposts rp
ON rp.post_id = p.id
LEFT JOIN users urp
ON urp.id = rp.user_id;
你以一种奇怪的顺序加入。从帖子开始,然后离开加入用户,等等。再次加入用户,但这次是关于帖子和用户之间的关系。是否可以重新发布帖子?在这种情况下,您是否需要原始海报,而不是最后一个转载者?哦,天哪,我完全忘记了转载的功能,但我计划在我的posts表repost_id中有另一个字段,用于存储repost.id,以区分该帖子是否为转载。非常感谢!如果这个答案对你有帮助,请考虑把它标记为答案,非常感谢!