MySql Reblog /转发

时间:2016-09-07 21:56:44

标签: mysql

我已经在我正在构建的应用中合并了一个reblog系统,但我很难找到在同一个流中检索帖子的帖子的逻辑。

我有一个post_reblog数据透视表来存储post_iduser_id - 发布帖子的用户的ID。

以下查询检索帖子,但发布帖子 - 仅检索原始帖子。我无法弄清楚如何检索 原帖的帖子,并在同一个帖子中分享。

SELECT *
FROM posts
Where status = 'published'
OR id IN (SELECT * FROM (SELECT post_id FROM post_reblog ) AS subquery)

我的桌子

posts
    post_id (int)
    user_id (int)
    title   (varchar)
    body    (text)

post_reblog
    post_id (int)
    user_id (int)

1 个答案:

答案 0 :(得分:0)

问题是所有的帖子都在查询中。当您使用OR时,每行只能出现一次 一个可能的解决方案是工会:

SELECT post_id, user_id 'original poster', user_id 'current poster', title, body
FROM posts
WHERE status = 'published'
UNION ALL
SELECT p.post_id, p.user_id 'original poster', pr.user_id 'current poster', p.title, p.body
FROM post_reblog pr
INNER JOIN posts p ON p.post_id = pr.post_id
WHERE p.status = 'published'

注意,它是UNION ALL,因为UNION ALL不会删除重复的行。 另请注意,两个查询的不同之处在于“当前海报”是重新发布者。