我正在尝试构建一个我认为它涉及内部联接的SQL查询,但我无法弄明白。这是模型:
有两个表:评论,帖子
在众多专栏中,有以下重要内容:comments.id
,comments.user_id
(所有者),comments.post_id
(对帖子表的引用),posts.id
,{{1} }(这是人,即帖子的所有者)。
我希望收到
的评论1)当前用户已写入,如下所示:
posts.editor_id
2)(假设select * from comments where user_id = <<current_user_id>>
是编辑)。获取属于您已创建的帖子的所有评论。
这就是我所拥有的,但我得到了多条线......我错过了什么?
current_user
如果你能给我一个包含这两件事的SQL查询,那就太棒了。
谢谢!
答案 0 :(得分:1)
我不确定你的意思是“多行”,因为你会为每个评论返回一行。 这应该做到这一点。
SELECT comments.*
FROM comments
INNER JOIN posts
ON comments.post_id = posts.id
WHERE posts.editor_id = @editorID;
答案 1 :(得分:0)
我想得到1)当前用户已经写过的评论,例如:select * from comments where user_id =&lt;&gt;
这是对的。这有什么问题?
好吧......你应该这样做。看一下这个模式,确实一个帖子可能包含很多评论。 tyrongower提供的查询应该做你想要的。获取属于您已创建的帖子的所有评论。这就是我所拥有的,但我得到了多行
答案 2 :(得分:0)
根据您的要求,这应该适合您:
SELECT * FROM comments
WHERE (user_id = 1)
OR (post_id IN (SELECT id FROM post WHERE editor_id = 1))
在上面的查询中,“1”用作示例,应该替换为当前用户的id。