sql查询总记录以及 查询每条光缆下的所涉及到表的信息

/*光缆有条少条隐患
1,查询光缆表Optic_Cable,
2,根据光缆表关联的光缆巡检(轨迹巡检)的路线查标石(Optic_LinePat轨迹的路线名称),(Optic_LinePat_Sub,轨迹路线下的标石),
3,然后根据标石关联巡检信息表中这个标石的所有隐患次数(Optic_LinePat_Rec巡检产生的信息表,根据上面查询到的标石进行隐患匹配)
*/
select a.光缆条数 as glcount,a.光缆长度 as gllength,b.正常端口 as yesdk,b.损坏端口 as nodk,
b.业务已使用 as yesyew,b.业务未使用 as noyew,c.经过标石 as biaoshi,d.隐患 as yinhuan   from
(select count(*)as ‘光缆条数‘, sum(CONVERT(int,cable_length)) as ‘光缆长度‘ from Optic_Cable) a,
(select COUNT(case status  when ‘0‘ then ‘正常‘  end) as ‘正常端口‘,
COUNT(case status  when ‘1‘ then ‘损坏‘  end) as ‘损坏端口‘,
COUNT(case when  connect_content=‘‘ or connect_content is null    then ‘未使用‘ end)‘业务未使用‘,
COUNT(case when  connect_content is not null    then ‘已使用‘ end)as ‘业务已使用‘  
from Optic_Cable_Port ) b,
(select COUNT(c.F_Id) ‘经过标石‘from Optic_Cable a /*光缆*/
left join  Optic_LinePat b/*光缆巡检线路*/
on a.F_Id=b.F_Id
left join Optic_LinePat_Sub c/*光缆线路子表(标石)*/
on b.F_Id=c.F_Olp_Id
where b.F_Id is not null) c,
(select COUNT(*)as ‘隐患‘ from Optic_Cable a /*光缆*/
left join  Optic_LinePat b/*光缆巡检线路(光缆表中有个轨迹巡检的名称两者进行关联)*/
on a.F_Id=b.F_Id
left join Optic_LinePat_Sub c/*光缆线路子表(轨迹巡检条数下有标石,在标石表中有轨迹的关联编号)*/
on b.F_Id=c.F_Olp_Id
left join Optic_LinePat_Rec d/*在线路巡检表中有标石的编号f_well_id*/
on c.F_Well_Id =d.F_well_id/*拿标石去查询产生的隐患,两者关联*/
where b.F_Id is not null and d.F_Env_State=‘隐患‘)d
 
/**查询总记录**/
select a.glcount,a.gllength,b.duankouYes,b.duankouNo ,
b.yewuYes,b.yewuNo ,c.biaoshi ,d.隐患 as yinhuan   from
(select count(*)as glcount, sum(CONVERT(int,cable_length)) as gllength from Optic_Cable) a,
(select COUNT(case status  when ‘0‘ then ‘正常‘  end) as duankouYes,
COUNT(case status  when ‘1‘ then ‘损坏‘  end) as duankouNo,
COUNT(case when  connect_content=‘‘ or connect_content is null    then ‘未使用‘ end)yewuNo,
COUNT(case when  connect_content is not null    then ‘已使用‘ end)as yewuYes
from Optic_Cable_Port ) b,

(select COUNT(c.F_Id) biaoshi from Optic_Cable a
left join  Optic_LinePat b
on a.F_Id=b.F_Id
left join Optic_LinePat_Sub c
on b.F_Id=c.F_Olp_Id
where b.F_Id is not null) c,

(select COUNT(*)as ‘隐患‘ from Optic_Cable a
left join  Optic_LinePat b
on a.F_Id=b.F_Id
left join Optic_LinePat_Sub c
on b.F_Id=c.F_Olp_Id
left join Optic_LinePat_Rec d
on c.F_Well_Id =d.F_well_id
where b.F_Id is not null and d.F_Env_State=‘隐患‘)d

时间: 2024-10-07 11:48:26

sql查询总记录以及 查询每条光缆下的所涉及到表的信息的相关文章

Oracle查询当前记录的上一条记录或下一条记录

//查询当前记录的 //oracle 上一条记录select decode(decode(txbs,'无',null,txbs),lag(t.txbs, 1, 0) over(order by t.cjid),'是','否')from qb_app_rycj t //下一条记录select t.id, lead(t.id, 1, 0) over(order by t.sort,t.eidt_date) as p from cms_article t

在MySQL数据库里用一个SQL语句取得本条记录及其上一条和下一条记录

在做文章页面时,有时候需要在文章下面显示出上一条和下一条记录.如果简单地使用id值加1和减1的方法来做会有缺陷. 各位看官请试想,如果我们删除了中间的某一条和某几条记录呢?那不是取不出来了? 所以,思想是很重要的,嗯.举个例子吧,比如说我有一个名叫XXX的表,里面有唯一的id字段.然后,里面有N条数据呢~~~ 现 在,我们来看看我们的思维.我们是要根据已知ID来找上一条和下一条的,也就是在数据库里相邻的三条记录, 中间那一条是确定的.那既然ID有可能不连续, 那我们就用>和<运算符来吧(要是L

使用SQL语句查询某记录的前后N条数据

id是指当前数据tb_id参数 方法一: string preSql = "select top 1 * from table where tb_id < " + id + " order by tb_id DESC" string nextSql = "select top 1 * from table where tb_id > " + id + " order by tb_id ASC" 方法二: strin

MySQL使用GROUP BY后查询总记录数

test表 要查出某个用户具有哪些操作,即把操作进行组合 以下的SQL可以达到目的 SELECT NAME,GROUP_CONCAT(operation) AS operation FROM test GROUP BY NAME 接着要查出这样的用户有多少个,直接在SELECT后加上COUNT()函数已经不起作用了. 一种解决方式是把查询结果当作一张表,在外层用SELECT COUNT(*) SELECT COUNT(*) FROM ( SELECT NAME,GROUP_CONCAT(oper

hibernate查询总记录数

@Override    public Integer getCount() {        return getHibernateTemplate().execute(new HibernateCallback<Integer>(){ @Override            public Integer doInHibernate(Session session) throws HibernateException {                String hql="se

【转】SQL删除重复记录,只保留其中一条

SQL:删除重复数据,只保留一条用SQL语句,删除掉重复项只保留一条在几千条记录里,存在着些相同的记录,如何能用SQL语句,删除掉重复的呢 1.查找表中多余的重复记录,重复记录是根据单个字段(peopleId)来判断 select * from people where peopleId in (select peopleId from people group by peopleId having count(peopleId) > 1) 2.删除表中多余的重复记录,重复记录是根据单个字段(p

如何从页面SQL语句进行相关后台查询

前几天刚刚做了一个页面书写sql语句,到后台查询相关结果的案例,给大家分享一下.有不足之处请大家多指教!!! 一.页面:因为查询的表不固定,所以表格需要自助生成(这是利用了"jqGrid") 若是不利用"jqGrid"也可以参考方法2. 方法1. <div> <nobr> <div> <form method="get" action="/management/transactionFlow/i

[MSSQL]如何高效查询表的总记录数

如何高效查询表的总记录数?[总结-整理-马克] 首先想到的自然是在表主键上应用COUNT函数来查询了,这个是目前使用最多的方法,没有之一 SELECT COUNT(1) ROWS FROM product 这里再给出一些其它方法,这些方法或多或少会有一些限制,或者看起来不是那么"完美",但依然有一定的借鉴意义,信息量不大,请客官慢用 另类方法1 充分利用系统自带的存储过程SP_SPACEUSED,详细的使用方式推荐谷哥或度娘,看代码 EXEC SP_SPACEUSED 'PRODUCT

QBC查询、离线条件查询(DetachedCriteric)和分页查询模版

一.QBC检索步骤 QBC检索步骤: 1.调用Session的createCriteria()方法创建一个Criteria对象. 2.设定查询条件.Expression类提供了一系列用于设定查询条件的静态方法, 这些静态方法都返回Criterion实例,每个Criterion实例代表一个查询条件. Criteria的add()方法用于加入查询条件. 3.调用Criteria的list()方法执行查询语句.该方法返回List类型的查询结果,在 List集合中存放了符合查询条件的持久化对象. 比较运