请教一个SQL语句

jml 2004-07-30 05:22:17
在一个表VOD_HIS中,可以实现以下操作
SELECT film_name, COUNT(FILM_NAME) AS COUNT FROM VOD_HIS where ORDER_TIME BETWEEN 0:0:0 and 23:59:59 GROUP BY film_name ORDER BY COUNT DESC
该操作对表中film_name字段内容相同的记录进行统计,并对统计结果排行

现在我要实现另一个功能,在上面的统计结果中,我还要通过film_name查询另一个表FILM_INFO,使得上面的统计结果必须满足表FILM_INFO的FILM_TYPE_ID字段必须等于一个特定的值1,我的SQL语句是这样写的
SELECT film_name, COUNT(FILM_NAME) AS COUNT FROM VOD_HIS,FILM_INFO WHERE VOD_HIS.FILM_NAME=FILM_INFO.FILM_NAME AND FILM_TYPE_ID=1 GROUP BY film_name ORDER BY COUNT DESC

可是查询语句分析却是错误的,我是新手,请高手指点一二,谢了!
...全文
105 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
pengda1i 2004-07-30
  • 打赏
  • 举报
回复


结果能对?


jml 2004-07-30
  • 打赏
  • 举报
回复
MagicYangCN(魔术师·杨) ,试了下,可以实现,十分感谢!
MagicYangCN 2004-07-30
  • 打赏
  • 举报
回复
语句最好一行的VOD_HIS.film_namee多了一个e
应该是VOD_HIS.film_name
MagicYangCN 2004-07-30
  • 打赏
  • 举报
回复
你的在一楼的SQL语句的错误应该是
"列名 'FILM_NAME' 不明确。"
因为你的两个表中有同名的字段'FILM_NAME' ,你需要指定是那个表的'FILM_NAME' 字段

试试这个语句:
SELECT VOD_HIS.film_name, COUNT(VOD_HIS.film_name) AS COUNT FROM VOD_HIS,FILM_INFO WHERE VOD_HIS.FILM_NAME=FILM_INFO.FILM_NAME AND FILM_TYPE_ID=1 GROUP BY VOD_HIS.film_namee ORDER BY COUNT DESC
jml 2004-07-30
  • 打赏
  • 举报
回复
LoveSQL(GG),好象不行,显示是列名FILM_TYPE_ID无效
pengda1i 2004-07-30
  • 打赏
  • 举报
回复
一楼的语句就怕结果产生重复
pengda1i 2004-07-30
  • 打赏
  • 举报
回复
SELECT film_name, COUNT(FILM_NAME) AS COUNT FROM VOD_HIS
where ORDER_TIME BETWEEN '0:0:0' and '23:59:59'
and exists (
select 1 from FILM_INFO
where FILM_NAME=VOD_HIS.FILM_NAME
and FILM_TYPE_ID=1
)
GROUP BY film_name
LoveSQL 2004-07-30
  • 打赏
  • 举报
回复
这样试试
select * from (
SELECT film_name, COUNT(FILM_NAME) AS COUNT FROM VOD_HIS where ORDER_TIME BETWEEN '0:0:0' and '23:59:59' GROUP BY film_name
)a,VOD_HIS b
where a.FILM_NAME=b.FILM_NAME and b.FILM_TYPE_ID=1
ORDER BY COUNT DESC

34,590

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧