0

我正在使用 rails 和一个插件来管理标签 - 我正在使用的查询涉及 - 一个任务表(与用户的多对多关系) - 一个标签表(存储对标签的引用 - id(int),名称(字符串) ) - 一个可标记表(多态表,它引用一个标记、可标记项和该项的标记器,在我的例子中是任务)

这是sql:

ActsAsTaggableOn::标签加载 (0.1ms)

SELECT "tags".* FROM "tags" WHERE (lower(name) = '#sharedtag')

任务负载(0.4ms)

SELECT "tasks".* 
FROM "tasks" INNER JOIN "task_relationships" 
ON "tasks"."id" = "task_relationships"."task_id" 
JOIN taggings tasks_taggings_f7b47be 
ON tasks_taggings_f7b47be.taggable_id = tasks.id 
AND tasks_taggings_f7b47be.taggable_type = 'Task' 
AND tasks_taggings_f7b47be.tag_id = 23 
WHERE "task_relationships"."user_id" = 1 
ORDER BY tasks.created_at DESC 

我感到困惑的是任务负载的第 3 行,它tasks_taggings_f7b47be.tag_id突然出现在哪里。我假设它是某种临时表或对创建的连接表的引用,但最近才开始探索 sql。

任何解释、链接或一般知识将不胜感激。

4

1 回答 1

3

我认为 tasks_taggings_f7b47be 是 taggings 表的别名 => http://www.w3schools.com/sql/sql_alias.asp

允许省略 AS 关键字:“别名的一般语法是 SELECT * FROM table_name [AS] alias_name。请注意,AS 关键字是完全可选的,通常出于可读性目的而保留。” 更多的

于 2013-06-03T18:56:27.120 回答