记录与其他表的关系

时间:2014-05-13 20:49:30

标签: php mysql sql

我有两个表:users和user_visits。

例如,我将获得user_id和0访问过的用户的名称,其中日期> ' 2014年5月6日'和日期< ' 2014年5月11日'

USERS TABLE                    USERS_VISITS TABLE

USER_ID |  NAME                USERS_VISIT_ID  |  USER_ID  |  DATE
   1    |  John                       1        |      1    |   2014-05-07
   2    |  Mark                       2        |      1    |   2014-05-08
   3    |  Mike                       3        |      4    |   2014-05-10
   4    |  Steven                     

结果必须是:

 USER_ID | NAME  | COUNT(*) |
    2    | Mark  |   0      |
    3    | Mike  |   0      |

我的查询是:

SELECT COUNT(uv.user_id) AS count_visited, 
FROM users u
LEFT JOIN users_visited uv ON (u.user_id=uv.user_id)  
WHERE uv.date >= '2014-05-06' 
AND uv.date <= '22014-05-11' 
GROUP BY u.user_id
HAVING count_visited = 0;

1 个答案:

答案 0 :(得分:0)

这是使用左连接

的方法
select
u.user_id,
u.name
from user u
left join user_visits uv on uv.user_id = u.user_id
AND uv.date >= '2014-05-06' 
AND uv.date <= '22014-05-11' 
where  uv.user_id is NULL