エラーのない次のクエリがあります。
SELECT u.user_name, u.user_lastn, outer_s.movie_id, outer_s.times_rented
FROM users u,
(
SELECT * FROM
(
SELECT user_id, movie_id, count (movie_id) as times_rented
FROM movie_queue
GROUP BY (user_id, movie_id)
ORDER BY user_id, movie_id
) inner_s
WHERE times_rented>1
) outer_s
WHERE u.user_id= outer_s.user_id;
これはそれが返すものです:
USER_NAME USER_LASTN MOVIE_ID TIMES_RENTED
------------------------ ------------------------ ---------- ------------
John Smith 1 3
John Smith 6 2
Mary Berman 4 2
Mary Berman 6 4
Elizabeth Johnson 1 2
Peter Quigley 2 2
私がまだする必要があるのは、 movie_idの代わりに映画の名前を表示することですが、映画の名前は、次のサンプルに似た、moviesという名前の別のテーブルにあります。
MOVIE_ID MOVIE_NAME
---------- ---------------------------------------------
1 E.T. the Extra-Terrestrial
2 Jurassic Park
3 Indiana Jones and the Kingdom of the Crystal
4 War of the Worlds
5 Signs
望ましい結果:
ファイナルテーブルに表示したいのは、次の列
です 。 USER_LASTN | MOVIE_NAME | TIMES_RENTED |
質問:
しかし、私は非常に混乱している多くのサブクエリの後で、movie_idの代わりにmovie_nameを取得するにはどうすればよいですか?
試行:
クエリを次のように変更して、目的の結果を取得しようとしました
SELECT u.user_name, u.user_lastn, m.movie_name, outer_s.times_rented
FROM users u, movie m (etc.....)
しかし、6行ではなく120行が返されました。
助けてください!!