3

假设我有一个包含列的电影租借人表:

  • 用户身份
  • 电影ID
  • Rent_Start_date
  • Rent_Due_Date

我正在尝试实现如下所示的输出表:

[UserID, Count of Movies Due in 1 Day, Count of Movies Due in 1 Week]

这可以在一个查询中完成吗?我目前有一个 php 脚本,它对 1 天内到期的电影运行 1 个查询,另一个查询在 1 周内运行电影。然后为每个用户 ID 循环这两个查询,基本上逐个插槽填充表。这有点慢。

通过尝试仅使用 1 个查询创建此输出,我尝试了以下操作:

  SELECT UserID, count(movieID)
    FROM MovieTable
GROUP BY movieID

但这不会创建到期日期计数列。

是否可以创建一个计数列,其中包含诸如计数(//所有这些都满足 where Rent_Due_Date - CURDATE() < ONE_WEEK)之类的论点?

4

1 回答 1

3

您需要按用户而不是电影对结果进行分组:

SELECT   UserID,
         SUM(Rent_Due_Date BETWEEN CURRENT_DATE AND CURRENT_DATE + INTERVAL 1 DAY),
         COUNT(*)
FROM     MovieTable
WHERE    Rent_Due_Date BETWEEN CURRENT_DATE AND CURRENT_DATE + INTERVAL 1 WEEK
GROUP BY UserID
于 2012-07-03T22:18:37.843 回答