所以我有3张桌子
帖子
评论
回复
我正在尝试从post.user_id = x
获取每个帖子的所有评论和回复.post_id我试过
SELECT *
FROM posts AS p
INNER JOIN comments as c
ON c.comment_id=p.post_id
INNER JOIN replies as r
ON r.reply_id=p.post_id
WHERE
p.user_id='x'
返回0 ...
修改
解决方案
SELECT *
FROM POSTS A
LEFT JOIN COMMENTS B ON A.POST_ID=B.COMMENT_ID
LEFT JOIN REPLIES C ON A.POST_ID=C.REPLY_ID
WHERE A.USER_ID='X'
所以如果我在评论和回复表上添加一个已删除的列,我该如何检查我收到的评论或回复是否未被删除?
我尝试在A.USER_ID='X' && B.deleted='0' && C.deleted='0'
但返回0。
答案 0 :(得分:7)
您错过了模型中的关键关系。你需要在post_id的回复和评论中有一个列,然后在post_id上加入表。
完成此更改后,您的查询将如下所示:
SELECT c.*, r.*
FROM posts p
INNER JOIN comments c ON p.id=c.post_id
INNER JOIN replies r ON p.id=r.post_id
WHERE p.user_id=$user_id
答案 1 :(得分:2)
尝试使用左连接而不是内连接,这将确保存在符合WHERE条件的POSTS表中的所有行。
SELECT *
FROM POSTS A
LEFT JOIN COMMENTS B ON A.POST_ID=B.COMMENT_ID
LEFT JOIN REPLIES C ON A.POST_ID=C.REPLY_ID
WHERE A.USER_ID='X'
答案 2 :(得分:0)
从我所看到的所有表格中都缺少 post_id 。 ids太多了。 改变你的表格,以便关系明显,然后你可以很容易地提取数据。