100分求解该sql语句的翻译
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了100分求解该sql语句的翻译相关的知识,希望对你有一定的参考价值。
这条语句太长,我理解不了。求大人能用中文把意思表达出来。
select r.* from room r inner join category cat on r.cid = cat.id
where cat.code=? and r.status=? and r.id not in(
select m.roomid from(
select sum(dtl.residetype) as cnt,dtl.rid as roomid,
rsd.residedate
from reisde rsd inner from subscription_dtl dtl
on rsd.dtlid=dtl.id
where rsd.residedate between :startDate and :endDate
group by dtl.rid, rsd.residedate
having cnt >=2) m);
补充:
我调整了一下你的sql文格式,加了一些注释。
因为下面显示不下,所以有点乱,你考出来到文件里面再看。
*******************
select r.* --查询room中所有字段
from room r inner join category cat on r.cid = cat.id --从room和category的内连接结果集中,并且这两个表被分别重命名为r和cat
where cat.code=? --category表的code=?
and r.status=? --room表的status=?
and r.id not in --room表的id不在下面的结果集中
(
select m.roomid --下面结果集的roomid(注意看下面的结果集被命名为了m)
from(
select sum(dtl.residetype) as cnt, --subscription_dtl的residetype字段和,并重命名为cnt
dtl.rid as roomid, --subscription_dtl的rid字段,并重命名为roomid
rsd.residedate --reisde的residedate字段
from reisde rsd inner from subscription_dtl dtl on rsd.dtlid=dtl.id --两个表的内连接结果
where rsd.residedate between :startDate and :endDate --reisde的residedate在:startDate和:endDate之间
group by dtl.rid, rsd.residedate --按照subscription_dtl的rid和reisde的residedate字段 分组
having cnt >=2 --在分组后的结果集中过滤出 cnt>0 的结果,其他的全部要
)m --这里重命名的。
)
;
---
以上,希望对你有所帮助。 参考技术A 中文意思?翻译? 参考技术B 没看明白楼主的意思,不是一楼这样翻译么?
请问一下,那位高手知道数据库语句中 in ,on ,with 等关键字的用法啊,求解.......
参考技术A 这个问题不太明确,in,谓词,用来查找属性值属于指定集合的元组 ,可以作为一个where条件 select * from table where id in ('1','2'),还可以组合成关键字;ON 是连接时候的条件 join on 两个表的关系 ;wiht可单独使用,提供不同功能,例如 with chenk option等,还有一种常用的用法是 with as,WITH 通常与AS连用,也叫做子查询部分。用法:
1). 可用来定义一个SQL片断,该片断会被整个SQL语句所用到。
2). 为了让SQL语句的可读性更高
3). 也有可能是在UNION ALL的不同部分,作为提供数据的部分。特别对于UNION ALL比较有
用。因为UNION ALL的每个部分可能相同,但是如果每个部分都去执行一遍的话,则成本
太高,所以可以使用WITH AS短语,则只要执行一遍即可。
例如:下面两种表达的是同一种意思:
①with alias as (select * from pra)
②select * from pra;
以上是关于100分求解该sql语句的翻译的主要内容,如果未能解决你的问题,请参考以下文章