【问题标题】:Record that haven't relationship with other table与其他表没有关系的记录
【发布时间】:2014-05-13 20:49:30
【问题描述】:

我有两个表:users 和 user_visits。

例如,我将获取访问过 0 次的用户的 user_id 和名称,其中日期 > '2014-05-06' 和日期

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;

【问题讨论】:

  • 向我们展示您的尝试。没有代码的问题将被关闭。
  • OP 的任何问题中都没有任何代码。 嗯,大部分。
  • 尝试自己编写一些东西,如果不起作用,请具体向我们展示您所做的事情,以便我们为您提供帮助。 您启动它,然后我们提供帮助。我们不是为您编写的。 向我们展示您尝试过的实际代码,然后描述发生的情况和不正确的地方,然后我们可以从那里帮助您。如果您先自己尝试一下,您可能会非常接近答案。

标签: php mysql sql


【解决方案1】:

这是使用左连接的方法

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

【讨论】:

    猜你喜欢
    • 2018-03-18
    • 1970-01-01
    • 2015-06-18
    • 1970-01-01
    • 1970-01-01
    • 2015-06-01
    • 2013-04-26
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多