按标签过滤标签并计数

Posted

技术标签:

【中文标题】按标签过滤标签并计数【英文标题】:Filter tags by tags and count 【发布时间】:2012-11-28 00:45:58 【问题描述】:

我的mysql结构如下:

+----+-------------------------+-------------+-----------+--------------+
| id | title/text/moretext/img | language_id | course_id | country_code |
+----+-------------------------+-------------+-----------+--------------+
|  1 | Plenty of information   |           1 |         3 | it           |
+----+-------------------------+-------------+-----------+--------------+

我正在使用 laravel 框架来构建我的网站。

这是一个食谱。它是一道开胃菜(course_id 3 使用 php 数组转换为开胃菜,因为页面是多语言的)。 这道开胃菜来自它。 'it' 在 PHP 中再次翻译为意大利,因为国家名称将是多语言的。 配方是用英语编写的(language_id 是与语言表的一对多关系,语言 id 1 是英语)。 提供此信息以防万一它改变任何东西,我对此表示怀疑,但最好谨慎行事。

每篇文章只有一个标签。

我需要的是一个与所有可用选项相呼应的选择列表(与正在使用的过滤器相关的选项,因此,如果我没有来自南非的法语食谱,如果法语是选择的语言)。

Google 一无所获,我的时间不多了,我的想法为零。有什么方法可以轻松实现吗?

我研究了http://luis-almeida.github.com/filtrify/ 并认为这正是我想要的功能,但我认为它对大型数据库来说太重了,因为我必须查询整个数据库并列出一个列表从中。但我可能错了。

使用类似http://harvesthq.github.com/chosen/ 的实现也可以用于选择,但我什至不知道如何实现它。

任何帮助都会非常棒。我在这里完全超出了我的头脑,并且完全没有编程热情。我已经花了几天的时间在这上面画一个空白。没有别的要问了。

【问题讨论】:

【参考方案1】:

一种快速而肮脏的方式来解决这个问题(您可以随时回来并在以后增强它)是

SELECT DISTINCT country_code, language_id 
FROM recipes 
ORDER BY country_code, language_id

使用任何必要的连接/翻译来获取国家/地区名称和语言名称,然后从结果中创建一个下拉列表...

Deutschland - Deutsch 
France - Francais 
South Africa - Afrikaans 
South Africa - English 
United States - English

所以每个项目都是国家名称和语言。如果大多数国家/地区只使用一种或两种语言,那么这对用户来说不应该是压倒性的。

【讨论】:

以上是关于按标签过滤标签并计数的主要内容,如果未能解决你的问题,请参考以下文章

Aws S3按标签过滤。按标签搜索

无论如何,为了提高 SQL 查询的性能,以按标签匹配计数查找具有顺序的行

Django 在模板标签中过滤和计数

Logcat 按应用程序命令行过滤,不带标签

无法在 Shopware 6 中按多个标签过滤产品

使用 pandas 在数据帧上执行 groupby,按计数排序并获取 python 中的前 2 个计数