有人可以验证我正确解释这个sql语句吗?

时间:2013-06-03 18:50:17

标签: sql

我正在使用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。

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

1 个答案:

答案 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