問題のない次のクエリがあります。
SELECT m.movie_name, cd.times_requested
FROM movie m,
(select *
from(
select movie_id, count(movie_id) as times_requested
from movie_queue
where status_id=0 or status_id=1
group by movie_id
) ab
where times_requested>1) cd
WHERE m.movie_id=cd.movie_id;
次のリストを返します。
MOVIE_NAME TIMES_REQUESTED
----------------------------------------------------------------------
E.T. the Extra-Terrestrial 2
Indiana Jones and the Kingdom of the Crystal Skull 2
War of the Worlds 3
Unbreakable 3
質問:
各映画に利用可能な DVD の量を示す別の列を追加するにはどうすればよいですか?
上の表は問題ありませんが、3 番目の列を追加したいと思います。3 番目の列には、各映画で利用可能な DVD の数に関する情報が含まれます。問題は、DVD の数が別のテーブル コール DVDS に格納されていることです。テーブル DVD の構造は次のようになります。
DVD_ID MOVIE_ID DVD_ENTRY_DATE
---------- ---------- --------------
1 1 24-JUL-12
2 1 24-JUL-12
3 1 24-JUL-12
4 2 24-JUL-12
5 2 24-JUL-12
望ましい結果:
最終的なテーブルは次のようになります。
MOVIE_NAME TIMES_REQUESTED DVDS_AVAILABLE
-------------------------------------------------------------------
E.T. the Extra-Terrestrial 2 3
Indiana Jones and the Kingdom 2 1
War of the Worlds 3 3
Unbreakable 3 1
次のコードを試しましたが、望んでいた結果が得られませんでした。
最初に DVD テーブルに移動し、必要な movie_id に一致するすべての DVD を見つけて、movie_id でグループ化する必要があると想定しています。以下のコードを試してみましたが、必要な 4 行を返す代わりに 72 を返しています。
SELECT m.movie_name, pomid.times_requested, d.dvds_available
FROM movie m,
(select *
from(
select movie_id, count(movie_id) as times_requested
from movie_queue
where status_id=0 or status_id=1
group by movie_id
) mid
where times_requested>1) pomid,
(select movie_id, count(movie_id) as dvds_available
from dvd
group by movie_id) d
WHERE m.movie_id=pomid.movie_id;
これを修正する方法についてご提案いただきありがとうございます。