SQL:加入父 - 子表

时间:2012-07-09 20:46:28

标签: sql sql-server inner-join outer-join

我正在构建一个简单的评论网站应用程序,需要一些SQL查询帮助。

有3个表(主题,评论,用户)。我需要一个SQL查询来从所有3个表中选择数据。

'Topics'表是父表,'Comments'表包含子记录(每个父表从0到100个记录。

第三个表'Users'包含所有用户的用户信息。

以下是3个表格的字段:

Topics (topicID, strTopic, userID)
Comments (commentID, topicID, strComment, userID)
Users (userID, userName)

我试过了:

SELECT * 
FROM   Topics 
  Inner Join Comments ON Topics.topicID = Comments.topicID
  Inner Join Users ON Topics.userID = Users.userID

但这不能正常工作,因为有多个主题且用户信息未加入“注释”表。任何帮助将不胜感激。

2 个答案:

答案 0 :(得分:1)

您应该使用“评论”左侧加入以获取没有评论的主题,并且还会与用户一起加入主题和评论,以获取两者的相关用户信息。

SELECT * 
FROM Topics t
INNER JOIN Users tu on tu.userID = t.userID
LEFT JOIN Comments c on c.topicID = t.topicID
LEFT JOIN User cu on cu.userID = c.userID

答案 1 :(得分:0)

您需要两次加入用户表。

SELECT *
FROM Topics
 INNER JOIN Comments ON Topics.topicID = Comments.topicID
 INNER JOIN Users AS u1 ON Topics.userID = u1.userID
 INNER JOIN Users AS u2 ON Comments.userID = u2.userID