为什么这个相当简单的连接不起作用?

为什么这个相当简单的连接不起作用?

问题描述:

我正在使用此查询来获取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行使用了一个字符串,该字符串无法工作。

的代码高亮真正帮助的情况下,第二的右侧部分连接是在错误的括号,它应该是反引号(`)而不是引号(')

+0

这实际上是问题,查询已被我的框架生成错误:/ – Dunhamzzz 2011-06-08 09:32:43

tags_tasks.tag_id被当作一个值,因为它在引号之间。