我正在尝试从3个单独的表中选择数据,其中2个表包含多行数据。我正在使用的sql查询就是这个,但我遇到的是,当我运行它时,如果taskdependements或tasksdependencies的结果为零,则整个任务都没有显示。
SELECT t.*, GROUP_CONCAT(a.DependenciesId) as DiesId, GROUP_CONCAT(b.DependeesId) as DeesId FROM tasks t JOIN tasksdependencies a ON a.TasksId=t.TasksId JOIN taskdependees b ON b.TasksId=t.TasksId GROUP BY t.TasksId
我在这个查询中做错了什么?
答案 0 :(得分:2)
使用LEFT JOIN
,如果两个表中都存在关联,则内部联接将给出行,而左表将返回左表中的行,即使它们没有关联
SELECT t.*, GROUP_CONCAT(a.DependenciesId) as DiesId,
GROUP_CONCAT(b.DependeesId) as DeesId
FROM tasks t
LEFT JOIN tasksdependencies a ON a.TasksId=t.TasksId
LEFT JOIN taskdependees b ON b.TasksId=t.TasksId
GROUP BY t.TasksId