我正在使用此查询来获取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
子句时,它会返回所有任务但标记字段为NULL条目。
问题实际上是CakePHP使用引号而不是反引号创建无效连接。感谢您指出这一点,我将进行更深入的调查。
答案 0 :(得分:2)
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行使用了一个字符串,这可能无法正常工作。
答案 1 :(得分:1)
代码突出显示真的有帮助,第二个连接的右边部分是错误的括号,它应该是反引号(`)而不是引号(')
答案 2 :(得分:1)
tags_tasks.tag_id
被视为一个值,因为它在引号之间。