Sql 充当标记:查找具有名称的标记,如,按标记计数排序?
您好,我正在使用rails插件Sql 充当标记:查找具有名称的标记,如,按标记计数排序?,sql,ruby-on-rails,ruby-on-rails-plugins,acts-as-taggable-on,Sql,Ruby On Rails,Ruby On Rails Plugins,Acts As Taggable On,您好,我正在使用rails插件作为上的标记,我正在尝试查找名称匹配和部分匹配给定查询的前5个最常用的标记 当我执行User.skill\u counts.order('count DESC')。limit(5)。where('name LIKE?',params[:query]) 这将返回以下错误: ActiveRecord::StatementInvalid: SQLite3::SQLException: ambiguous column name: name: SELECT tag
作为
上的标记,我正在尝试查找名称匹配和部分匹配给定查询的前5个最常用的标记
当我执行User.skill\u counts.order('count DESC')。limit(5)。where('name LIKE?',params[:query])
这将返回以下错误:
ActiveRecord::StatementInvalid: SQLite3::SQLException: ambiguous column name: name: SELECT tags.*, COUNT(*) AS count FROM "tags" INNER JOIN users ON users.id = taggings.taggable_id LEFT OUTER JOIN taggings ON tags.id = taggings.tag_id AND taggings.context = 'skills' WHERE (taggings.taggable_type = 'User') AND (taggings.taggable_id IN(SELECT users.id FROM "users")) AND (name LIKE 'asd') GROUP BY tags.id, tags.name HAVING COUNT(*) > 0 ORDER BY count DESC LIMIT 5
但是当我做User.skill\u时,first.name很重要
这是回报
"alliteration"
我非常感谢您在这件事上的任何帮助。旅游查询应该是这样的
SELECT tags.*, COUNT(*) AS count FROM "tags"
INNER JOIN users ON users.id = taggings.taggable_id
LEFT OUTER JOIN taggings ON tags.id = taggings.tag_id AND taggings.context = 'skills'
WHERE (taggings.taggable_type = 'User') AND
(taggings.taggable_id IN(SELECT users.id FROM "users")) AND
(tags.name LIKE 'asd')
GROUP BY tags.id, tags.name HAVING COUNT(*) > 0
ORDER BY count DESC
LIMIT 5
为此,请尝试以下内容
User.skill_counts.order('count DESC').limit(5).where('tags.name LIKE ?', params[:query])
巡更查询应该如下所示
SELECT tags.*, COUNT(*) AS count FROM "tags"
INNER JOIN users ON users.id = taggings.taggable_id
LEFT OUTER JOIN taggings ON tags.id = taggings.tag_id AND taggings.context = 'skills'
WHERE (taggings.taggable_type = 'User') AND
(taggings.taggable_id IN(SELECT users.id FROM "users")) AND
(tags.name LIKE 'asd')
GROUP BY tags.id, tags.name HAVING COUNT(*) > 0
ORDER BY count DESC
LIMIT 5
为此,请尝试以下内容
User.skill_counts.order('count DESC').limit(5).where('tags.name LIKE ?', params[:query])