帮助构建使用内部联接的SQL查询

时间:2011-06-23 06:02:55

标签: mysql sql sql-server

我正在尝试构建一个我认为它涉及内部联接的SQL查询,但我无法弄明白。这是模型:

有两个表:评论,帖子

在众多专栏中,有以下重要内容:comments.idcomments.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查询,那就太棒了。

谢谢!

3 个答案:

答案 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。