为什么这个相当简单的连接不起作用?
问题描述:
我正在使用此查询来获取HABTM关系中具有特定标记的所有任务。然而,由于某些原因,它没有将相关标签附加到tags_tasks,因此返回0,因为它无法从标签表中拾取任何东西。为什么这个相当简单的连接不起作用?
SELECT `Task` . * , `Task`.`id`
FROM `tasks` AS `Task`
LEFT JOIN `tags_tasks` AS `TagsTask` ON (`TagsTask`.`task_id` = `Task`.`id`)
LEFT JOIN `tags` AS `FilterTag` ON (`FilterTag`.`id` = 'TagsTask.tag_id')
WHERE `Task`.`assigned_id` = '4de50bef-bbc8-404d-9f46-2a
当我删除了WHERE
子句,它将返回的所有任务,但与标签领域的空项。
问题实际上是CakePHP用引号而不是反引号创建了一个无效的连接。感谢您指出,我会深入调查。
答
SELECT *
FROM `tasks`
LEFT JOIN `tags_tasks` ON (`tags_tasks`.`task_id` = `tasks`.`id`)
LEFT JOIN `tags` ON (`tags`.`id` = `tags_tasks`.`tag_id`)
WHERE `tags`.`name` = 'Problem'
您在第3行使用了一个字符串,该字符串无法工作。
答
的代码高亮真正帮助的情况下,第二的右侧部分连接是在错误的括号,它应该是反引号(`)而不是引号(')
答
tags_tasks.tag_id
被当作一个值,因为它在引号之间。
这实际上是问题,查询已被我的框架生成错误:/ – Dunhamzzz 2011-06-08 09:32:43