左联接查询不显示数据

时间:2018-11-15 07:19:31

标签: php sql ms-access

SELECT Name,Checktime 
FROM Userinfo 
LEFT JOIN Checkinout ON USERINFO.USERID = CHECKINOUT.USERID 
WHERE Checktime >= #11/14/18 04:35:00 AM#;       

上面的查询必须显示userinfo表中的所有名称,但只显示带有checkinout表的匹配数据。

Here is my table

enter image description here

4 个答案:

答案 0 :(得分:0)

您的问题标题为LEFT JOIN not working,但在查询中,您使用的是RIGHT JOIN

在查询中仅使用LEFT JOIN。它将列出USERINFO中的所有用户,但仅列出CHECKINOUT中的匹配记录。

SELECT `Name`, `Checktime`
FROM `Userinfo`
LEFT JOIN `Checkinout` ON `USERINFO`.`USERID` = `CHECKINOUT`.`USERID`
Where `Checktime` >= #11/14/18 04:35:00 AM#;

答案 1 :(得分:0)

如果要显示用户信息中的所有名称并显示签入表中的匹配数据,只需将RIGHT JOIN更改为LEFT JOIN。

SELECT Checkinout.USERID, Userinfo.Name, Userinfo.Checktime,
FROM Userinfo
LEFT JOIN Checkinout ON USERINFO.USERID = CHECKINOUT.USERID
WHERE Checktime >= #11/14/18;

尝试这个。

答案 2 :(得分:0)

您可以在每个表上设置别名

SELECT a.*,b.* 
FROM Userinfo  a
LEFT JOIN Checkinout b ON a.USERID = b.USERID 
Where b.Checktime>=#11/14/18 04:35:00 AM#;  

答案 3 :(得分:0)

在大多数数据库中,您将条件移至bash子句:

complete -E

A,MS Access不支持此标准语法。您可以改用子查询:

ON