我正在尝试做以下事情......
我有一个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?
所有帮助将不胜感激!
答案 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"