我有这个没有问题的查询:
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 数量,我不能只是加入它,因为我需要先按 movie_id 对 DVD 进行分组?
上表没问题,但我想添加第三列,第三列将包含有关每部电影可用 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;
感谢您提供有关如何解决此问题的建议。