mysql - HABTM特殊加盟

标签 mysql join has-and-belongs-to-many

我得到了以下habtm关系。

我的模型标签与许多标签组关联。所以我可以有多个包含相同标签的标签组。 我有标签组用户 View ,其中显示了所有标签组,包括该标签组的标签。现在,我为标签组提供了一个特殊选项,名为“黑名单”。如果标记组被标记为黑名单,则该标记组没有用户 View ,并且该标记组的所有标记在可能也包含它们的任何其他标记组 View 中不应可见。 我希望我说得足够清楚,您会看到我的问题。

我现在的问题是:相应的 mysql 查询会是什么样子? 我考虑过两个连接表的交集,但据我所知 mysql 不支持交集..

提前致谢。

最佳答案

SELECT DISTINCT Tag.* FROM taggroups TagGroup
INNER JOIN tag_taggroups TagTagGroup ON TagGroup.id = TagTagGroup.taggroup_id
INNER JOIN ( SELECT t.*  FROM 
tags t
INNER JOIN 
tag_taggroups ttg ON t.id = ttg.tag_id 
INNER JOIN taggroups tg ON tg.id = ttg.taggroup_id         
GROUP by t.id HAVING max(tg.blacklisted) = 0) AS Tag ON Tag.id = TagTagGroup.tag_id

在 friend 的帮助下解决了:)

关于mysql - HABTM特殊加盟,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26887840/

相关文章:

ruby-on-rails - has_and_belongs_to_many 关联的排序

ruby-on-rails - has_many :through relationship 中的 View

mysql - 限制一列只接受 2 个值

MySQL优化计数查询

MySQL 从连接表中选择两个计数

join - SQL 放置加入学生、 friend 、包

mysql - ms access sql 语句选择角色为 a 而非 b 的用户

mysql - 将表项列为 VB 的字符串

php - 如何减小文本文件的大小?

ruby-on-rails - HABTM rails 关系中的 Pundit 范围