Sql 可以用一个查询查询一对多吗
以stackoverflow为例: 发布Sql 可以用一个查询查询一对多吗,sql,sql-server-2008,Sql,Sql Server 2008,以stackoverflow为例: 发布 Postid Title Mess -------------------------------------------------- 1 Title1 This is a question 2 Title2 This is a question1 3 Title3 This is a
Postid Title Mess
--------------------------------------------------
1 Title1 This is a question
2 Title2 This is a question1
3 Title3 This is a question2
4 Title4 This is a question3
5 Title5 This is a question4
6 Title6 This is a question5
标签
TagId PostId Name
-----------------------------
1 1 Tag1
2 1 Tag2
3 1 Tag3
4 1 Tag4
5 2 Tag5
6 3 Tag6
7 4 Tag7
8 5 Tag8
9 6 Tag9
10 3 Tag10
在这个设计中,我将如何在一个查询中获得所有问题及其相关标记。这可能吗
*编辑*
select t.*, p.* from Tags t
join post p on t.postid=p.postid
像这样的东西会给我每个问题的所有标签。但我不认为这是有效的。你觉得怎么样。我认为你的例子很弱。在用于连接文章和标记的表中不应包含标记名 您应该有以下表格:
- 帖子:帖子,标题,混乱
- 标记:TagId,名称
- 贴子标签:posted,TagId
select * from posts p
join posts_tags pt on p.postId = pt.postId
join tags on pt.tagId = t.tagId
您可以说效率较低,但您的示例中没有考虑数据重复,这可能会导致严重错误。您是说连接?退房请看一看你能显示你想要的作为一个查询的输出吗?“使用相关标签获取所有问题”相当模糊。如果您事先知道所有标签,并且不想在每篇文章中处理多个结果,您可以使用。您认为哪种方法更有效?随着您添加更多信息,这已不再是一个问题。谢谢,我需要澄清