我正在尝试执行以下操作...
我有一个带有表的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"