我在使用简单的SQL语句时遇到了一个小问题。
我需要确定电影表中是否有电影的7个副本,并且有6个人已将其租借出去,我需要看看我只剩下1个副本(我需要通过SQL查询来完成所有工作)。我知道通常我会使用PHP来做到这一点,而只是从副本总数中减去雇用的人数,但是可悲的是,我的大学希望我以其他方式做到这一点。
SELECT *,
COUNT(distinct hire.movie_id) AS num_orders
FROM `movie`
INNER JOIN hire ON hire.movie_id = movie.id
WHERE num_orders < movie.no_copies;
运行此命令时,出现以下问题#1054 - Unknown column 'num_orders' in 'where clause'
。
您不能在where谓词中使用别名-您需要重复谓词,在对别名进行过滤之前将查询包装在派生表中,或者也可以HAVING
按以下方式使用(至少在MySql中)。
我看不到需要的内容DISTINCT h.movie_id
(因为您想计算租金?-可能是DISTINCT h.hireid
?),看来您需要按电影分组以计算租金的数量。
怎么样:
SELECT m.id, m.no_copies, COUNT(h.movie_id) AS num_rentals
FROM `movie` m
INNER JOIN hire h ON h.movie_id = m.id
GROUP BY m.id, m.no_copies
HAVING num_rentals < m.no_copies;
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句