3

列を持つ映画のレンタル者のテーブルがあるとしましょう:

  • ユーザーID
  • 映画ID
  • 賃料開始日
  • Rent_Due_Date

次のような出力テーブルを実現しようとしています。

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

これは単一のクエリで実行できますか? 私は現在、1 日で期限切れの映画に対して 1 つのクエリを実行し、1 週間で期限切れの映画を実行する別のクエリを実行する php スクリプトを持っています。これら 2 つのクエリは、すべてのユーザー ID に対してループされ、実質的にスロットごとにテーブルに入力されます。これはちょっと遅いです。

1 つのクエリだけでこの出力を作成しようとすることで、次のようなことを試しました。

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

ただし、これは有効期限のカウントの列を作成しません。

count( //all they meet 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 に答える