我正在尝试计算个人资料访问次数,但它计算错误的数字。在以下示例中,应该有3次访问,但它数为6!有人知道它有什么问题吗? http://sqlfiddle.com/#!9/b43ea/8
SELECT *,
COUNT(profile_visitors.profile_id) AS visitorCount
FROM profile_visitors
LEFT JOIN user_login ON user_login.user_id = profile_visitors.user_id
WHERE profile_visitors.user_id = 1
答案 0 :(得分:1)
您需要分组依据来计算多行,因此请将Star从您的查询中删除,并按user_id添加一个组,同时将其设为profile_visitors。*
答案 1 :(得分:1)
LEFT JOIN到user_login表没有为这个问题带来任何好处,但是,以下查询将为您提供您想要查看的详细信息(假设您只想查看user_id = 1的访问次数):
SELECT COUNT(profile_visitors.profile_id) AS visitorCount
FROM profile_visitors
WHERE profile_visitors.user_id = 1
GROUP BY profile_visitors.profile_id
要查看个人资料的所有访问次数:
SELECT profile_id, COUNT(profile_visitors.profile_id) AS visitorCount
FROM profile_visitors
GROUP BY profile_visitors.profile_id
答案 2 :(得分:0)
您可以使用WHERE IN ()
来比较profile_visitors.user_id
user_login
SELECT *,
COUNT(profile_visitors.user_id) AS visitorCount
FROM profile_visitors
WHERE profile_visitors.user_id IN (SELECT user_id FROM user_login )
结果:
id user_id profile_id visit_date visitorCount
1 1 1 May, 10 2015 15:26:46 3