我正在编写类似于博客软件的Web应用程序。有以下三个表
Posts Table: Post_id,Post_Text Post_Tags Table: Post_id,Tag_id Tags Table:Tag_id,Tag_name
我很难概念化SQL查询,该查询将返回在给定集中具有“所有”标签的帖子。
这是关系划分。
使用GROUP BY和COUNT或加倍NOT EXISTS。
GROUP BY
COUNT
NOT EXISTS
第一种方法的一个例子是。
SELECT pt.Post_id, p.Post_Text FROM Post_Tags pt JOIN Posts p ON p.Post_id = pt.Post_id WHERE pt.Tag_id IN (1,2,3) GROUP BY pt.Post_id HAVING COUNT(DISTINCT pt.Tag_id) = 3