【发布时间】:2015-11-27 13:47:27
【问题描述】:
我的表结构如下:
表格文件夹id | title | is_hidden
表对象id | name | is_hidden | folder_id
表格标签id | name
表格label_to_folderid | label_id | folder_id
- 每个对象总是属于一个文件夹。
- 每个文件夹可能属于一个或多个标签(这由
label_to_folder表定义)
我正在尝试获取最常用(流行)的标签,并通过以下查询实现它(我认为:P):
SELECT COUNT(lf.label_id) AS cnt, lf.label_id, l.name FROM label_to_folder lf JOIN label l ON lf.label_id=l.id GROUP BY lf.label_id ORDER BY cnt DESC limit 8
我遇到的问题是上述查询的范围,因此它不计算隐藏文件夹 (folder.is_hidden=1) 或空文件夹(空文件夹是一个根本没有对象的文件夹,或者文件夹的所有对象都是隐藏)
任何帮助表示赞赏。
编辑
sqlfiddle: http://sqlfiddle.com/#!9/65526/1 那里的结果包括 id 为 5 的文件夹,但它的所有文件夹都是空的 - 这就是我要消除的。
【问题讨论】:
-
您可以添加一些数据以便我重新创建它来测试它吗?
-
只是一个观察 - label_to_folder 表中的
id似乎是多余的。除此之外,如果您愿意,请考虑遵循以下简单的两步操作: 1. 如果您还没有这样做,请提供适当的 CREATE 和 INSERT 语句(和/或 sqlfiddle),以便我们可以更轻松地复制问题. 2. 如果您尚未这样做,请提供与步骤 1 中提供的信息相对应的所需结果集。 -
@Strawberry 我正在研究 sql fiddle
-
酷。那是二分之一。
-
幸运的是,没有任何对象(或文件夹)被隐藏,所以这应该不是问题