我正在尝试执行以下操作...

我有一个带有表的PHPmyadmin数据库:任务,用户和一个表task_user。
例如,我要拥有2013年1月1日以来的所有任务,并且一个任务可以有多个用户。
我想用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吗?

所有帮助将不胜感激!

最佳答案

使用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"

10-08 13:32