我正在使用rails和插件来管理标签 - 我正在使用的查询涉及到 - 任务表(与用户的多对多关系) - 标签表(存储对标签的引用 - id(int),name(string)) - 一个可标记的表(引用标记的多态表,可标记的项和该项的标记,在我的例子中,是任务)
这是sql:
ActsAsTaggableOn :: Tag Load(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。
任何解释,链接或一般知识都将不胜感激。
答案 0 :(得分:3)
我认为tasks_taggings_f7b47be是taggings table =>的别名; http://www.w3schools.com/sql/sql_alias.asp
允许省略AS关键字: “别名的一般语法是SELECT * FROM table_name [AS] alias_name。请注意,AS关键字是完全可选的,通常为了可读性而保留。” more