具有NULL值的Mysql多连接表

时间:2013-05-17 12:08:22

标签: php mysql join

我正在尝试做以下事情......

我有一个PHPmyadmin数据库,其中包含表:tasks,users和table task_user。 例如,我希望从2013-01-01获得所有任务,并且任务可以包含多个用户。 我想在HTML中创建一个如下所示的表:

                      Name1       Name2       Name3
Date: 01-01-2013      Task                    Task
                      Task

因此,查询应始终返回用户是否有任务。

如果我这样做:

SELECT t.title, u.firstname, u.lastname FROM users as u
INNER JOIN task_user as tu ON tu.uid = u.uid
INNER JOIN tasks as t ON t.taskid = tu.taskid
WHERE t.date = "2013-05-16"

这只返回一个用户,此用户在此日期有两个任务,但它也只显示一个任务。

如何让这个查询给我所有用户完成所有任务? (如果他们有任务,否则返回null) 或者有人知道更好的方法吗?

我想我可能需要其他一些JOIN或GroupBy?

所有帮助将不胜感激!

1 个答案:

答案 0 :(得分:0)

使用LEFT或RIGHT联接而不是INNER联接。 如果在两个/所有表中都找到记录,则内部联接将仅返回记录

SELECT t.title, u.firstname, u.lastname FROM users as u
LEFt JOIN task_user as tu ON tu.uid = u.uid
LEFT JOIN tasks as t ON t.taskid = tu.taskid
WHERE t.date = "2013-05-16"