我正在使用 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。
任何解释、链接或一般知识将不胜感激。