首页 > 解决方案 > 获取在 2 个日期之间使用他们的卡 N 次的用户

问题描述

我想获得在两个日期之间使用他们的卡(pas)N 次的用户(Gebruiker)。

现在我尝试使用它HAVING COUNT或它的一些变体来获取一行包含外键的次数,并使用它来过滤掉在 2 个日期之间使用它至少 5 次的每个人。

这是我尝试过的,但没有日期:

SELECT *, COUNT(Pas_pasnummer)
FROM gebruiker
INNER JOIN pas_has_poort ON gebruiker.gebruikernummer=pas_has_poort.Pas_pasnummer
HAVING COUNT(Pas_pasnummer) = '1'

这是我的数据库: 数据库模型

标签: mysql

解决方案


gebruiker.gebruikernummer不是外键来的pas_has_poort.Pas_pasnummer。您需要通过链接表pas

您需要按 对查询进行分组gebruikernummer

然后,您可以在 中对日期设置条件pas_has_poort

SELECT g.*, COUNT(*) AS use_count
FROM gebruiker AS g
JOIN pas AS p ON g.gebruikernummer = p.gebruikergebruikernummer
JOIN pas_has_poort AS pp ON p.pasnummer = pp.Pas_pasnummer
WHERE pp.inchecktijd BETWEEN @start_date AND @end_date
GROUP BY g.gebruikernummer
HAVING use_count >= 5

推荐阅读