我正在玩2个数据库表。一个是用户表,其中包含用户详细信息,如全名和活动(无论用户是否处于活动状态)列。另一个是任务表,其中包含每个用户的任务详细信息。因此,tasks表包含名为UserID和StartTime的列。以下查询将显示昨天输入任务的所有用户详细信息。
$today = mktime(0,0,0);
$yesterday = $today - 86400;
$res = $db->fetchAll("SELECT DISTINCT tasks.UserID,user.full_name FROM `tasks` JOIN `user` ON tasks.UserID=user.id WHERE user.active=1 AND tasks.StartTime > ".$db->quote($yesterday,'integer')." AND tasks.StartTime < ".$db->quote($today,'integer'));
我需要找出昨天没有输入任务的用户详细信息。如何修改上述查询?
谢谢!
答案 0 :(得分:0)
尝试这样的事情:
SELECT DISTINCT tasks.UserID, user.full_name FROM `user` LEFT JOIN `tasks`
ON user.id=tasks.UserID WHERE user.active=1 AND tasks.StartTime = NULL;
MySQL在任务表中找不到用户时应该返回NULL。
答案 1 :(得分:0)
如何在加入之前从任务表中获取昨天的记录?
"SELECT DISTINCT tasks.UserID, user.full_name FROM `user` LEFT JOIN (
select * from `tasks` where tasks.StartTime > ".$db->quote($yesterday,'integer')."
) `tasks_from_yesterday`
ON user.id=tasks_from_yesterday.UserID WHERE user.active=1 AND tasks_from_yesterday.StartTime = NULL"