sql:判断+sql+子查询+关联查询

孵化园页面:

public class MeimsServiceImpl implements MeimsService {

private ParkinfoDomain parkinfoDomain;

/**   * 动态监测主控查询   *   * @param parkName   *            孵化园名称   * @param parkType   *            孵化园类型   * @return List<Parkinfo>   */

@Override

public List<ParkInfoVO> getParkinfoList(ParkInfoVO info,    Pagination pagination) {

Session session = DaoHelp.getInstance().getSession();

String sql = null;

String isLost=info.getIslost2();

if ( isLost== null || "".equals(isLost)) {

sql = "select i.id,i.parkname,(select name from CODE_ALLREGICODE_fhy c where i.areacode =c.code) as areacode,(select mc from meims_dm_parktype d where i.parktype =d.dm) as parktype ,i.setupdate,i.websitelink,i.websitelogo,i.placetype,i.placearea,i.placeaddress,i.placecardpicture,"

+ "i.placepicture,i.managesystemflag,i.mentflag,i.managesystemlink,i.gsxtflag,i.entnum,i.smallentnum,i.aftersmallentnum,i.newsmallentnum,i.talkroomflag,"      + "i.talkroomarea,i.talkroompicture,i.recordroomflag,i.recordroomarea,i.recordroompicture,i.superviseopinion,i.supervisespotflag,i.superviseuser,"      + "i.supervisedate,i.superviseorgan,i.status,i.sjc,i.reportdate as applyDate,i.reportuser as applyPerson from meims_parkinfo i ";

} else if ("0".equals(isLost)){

sql = "select i.id,i.parkname,(select name from CODE_ALLREGICODE_fhy c where i.areacode =c.code) as areacode,(select mc from meims_dm_parktype d where i.parktype =d.dm) as parktype ,i.setupdate,i.websitelink,i.websitelogo,i.placetype,i.placearea,i.placeaddress,i.placecardpicture,"

+ "i.placepicture,i.managesystemflag,i.mentflag,i.managesystemlink,i.gsxtflag,i.entnum,i.smallentnum,i.aftersmallentnum,i.newsmallentnum,i.talkroomflag,"

+ "i.talkroomarea,i.talkroompicture,i.recordroomflag,i.recordroomarea,i.recordroompicture,i.superviseopinion,i.supervisespotflag,i.superviseuser,"

+ "i.supervisedate,i.superviseorgan,i.status,i.sjc,i.reportdate as applyDate,i.reportuser as applyPerson "

+ " from (SELECT *  from MEIMS_PARKINFO  where id not in"

+ "(select parkinfoId from "      + "  (SELECT MEIMS_ENTERPRISEINFO.* , a.LOSECONNFLAG , a.ACCESSDATE FROM MEIMS_ENTERPRISEINFO LEFT JOIN (select * from"      + " (select t.*, row_number() over(partition by ENTERPRISEINFOID order by ACCESSDATE desc ,CREATETIME desc ) rn from MEIMS_ACCESSRECORD t ) where rn=1)a "      + "ON  MEIMS_ENTERPRISEINFO.ID=a.ENTERPRISEINFOID where MEIMS_ENTERPRISEINFO.STATUS=‘02‘ and MEIMS_ENTERPRISEINFO.VALID=‘Y‘"      + " )  where loseConnflag = 1 )) i ";

}else{

sql = "select i.id,i.parkname,(select name from CODE_ALLREGICODE_fhy c where i.areacode =c.code) as areacode,(select mc from meims_dm_parktype d where i.parktype =d.dm) as parktype ,i.setupdate,i.websitelink,i.websitelogo,i.placetype,i.placearea,i.placeaddress,i.placecardpicture,"      + "i.placepicture,i.managesystemflag,i.mentflag,i.managesystemlink,i.gsxtflag,i.entnum,i.smallentnum,i.aftersmallentnum,i.newsmallentnum,i.talkroomflag,"      + "i.talkroomarea,i.talkroompicture,i.recordroomflag,i.recordroomarea,i.recordroompicture,i.superviseopinion,i.supervisespotflag,i.superviseuser,"      + "i.supervisedate,i.superviseorgan,i.status,i.sjc,i.reportdate as applyDate,i.reportuser as applyPerson "

+ " from (SELECT *  from MEIMS_PARKINFO  where id in"

+ "(select parkinfoId from "      + "  (SELECT MEIMS_ENTERPRISEINFO.* , a.LOSECONNFLAG , a.ACCESSDATE FROM MEIMS_ENTERPRISEINFO LEFT JOIN (select * from"      + " (select t.*, row_number() over(partition by ENTERPRISEINFOID order by ACCESSDATE desc ,CREATETIME desc ) rn from MEIMS_ACCESSRECORD t ) where rn=1)a "      + "ON  MEIMS_ENTERPRISEINFO.ID=a.ENTERPRISEINFOID where MEIMS_ENTERPRISEINFO.STATUS=‘02‘ and MEIMS_ENTERPRISEINFO.VALID=‘Y‘"      + " )  where loseConnflag = 1 )) i ";   }

String whereSql = " where i.valid = ‘Y‘ and i.status=‘02‘ and exists( select o.id from a_organ o where o.id=i.orgid start with o.id= "     + info.getOrgid() + " connect by  prior o.id=o.parent)";   List<Object> params = new ArrayList<Object>();   List<org.hibernate.type.Type> paramTypes = new ArrayList<org.hibernate.type.Type>();   if (info.getParkname() != null && !"".equals(info.getParkname())) {    whereSql += " and i.parkname like ? ";    params.add(info.getParkname());    paramTypes.add(Hibernate.STRING);   }   if (info.getParktype() != null && !"".equals(info.getParktype())) {    whereSql += " and i.parkType = ? ";    params.add(info.getParktype());    paramTypes.add(Hibernate.STRING);   }   if (info.getApplyDate() != null) {    whereSql += " and i.reportdate >=  ? ";    whereSql += " and i.reportdate <  ? ";    params.add(info.getApplyDate());    paramTypes.add(Hibernate.TIMESTAMP);    params.add(info.getEndDate());    paramTypes.add(Hibernate.TIMESTAMP);   }   if (info.getApplyPerson() != null && !"".equals(info.getApplyPerson())) {    whereSql += " and i.reportuser like ? ";    params.add(info.getApplyPerson());    paramTypes.add(Hibernate.STRING);   }

String countsql = "select count(1) from  ( "+ sql ;

whereSql += " order by i.sjc desc ";   SQLQuery sqlQuery = session.createSQLQuery(sql + whereSql);   sqlQuery.addScalar("id", Hibernate.INTEGER);

sqlQuery.addScalar("parkname", Hibernate.STRING);

sqlQuery.addScalar("parktype", Hibernate.STRING);

sqlQuery.addScalar("areacode", Hibernate.STRING);

sqlQuery.addScalar("setupdate", Hibernate.TIMESTAMP);

sqlQuery.addScalar("websitelink", Hibernate.STRING);

sqlQuery.addScalar("superviseopinion", Hibernate.STRING);

sqlQuery.addScalar("supervisespotflag", Hibernate.STRING);

sqlQuery.addScalar("superviseuser", Hibernate.STRING);

sqlQuery.addScalar("supervisedate", Hibernate.TIMESTAMP);

sqlQuery.addScalar("superviseorgan", Hibernate.STRING);

sqlQuery.addScalar("applyPerson", Hibernate.STRING);

sqlQuery.addScalar("applyDate", Hibernate.TIMESTAMP);

SQLQuery countQuery = session.createSQLQuery(countsql + whereSql+")");

BigDecimal count = (BigDecimal) countQuery.setParameters(     params.toArray(), paramTypes.toArray(new Type[0]))     .uniqueResult();

if (pagination != null) {

pagination      .setTotalrecordCount(count == null ? 0 : count.intValue());

sqlQuery.setFirstResult(pagination.getFirstRecord());

sqlQuery.setMaxResults(pagination.getMaxRecord());   }

List<ParkInfoVO> list = sqlQuery     .setResultTransformer(

Transformers.aliasToBean(ParkInfoVO.class))     .setParameters(params.toArray(),

paramTypes.toArray(new Type[0])).list();

if (list != null && !list.isEmpty()) {

return list;

}

return null;

}

/**   * 得到所有的孵化园类型   *   * @return List<String>   */

public List<Object[]> getAllParkType() {   Session session = DaoHelp.getInstance().getSession();   SQLQuery sqlquery = session     .createSQLQuery("select dm, mc from meims_dm_parktype");   List<Object[]> objs = sqlquery.list();   return objs;  }

/**   * 录入或修改监管意见   *   * @param info   */  @Override

public void saveOrupadatesuperviseopinion(Parkinfo info) {

Session session = DaoHelp.getInstance().getSession();

session.saveOrUpdate(info);

}

/**   * 根据id查询Parkinfo   *   * @param id   * @return Parkinfo   */  @Override

public Parkinfo getParkinfo(Integer id) {   Session session = DaoHelp.getInstance().getSession();   return (Parkinfo) session.get(Parkinfo.class, id);  }

/**   * 根据id查询Serviceitem   *   * @param id   * @return List<Serviceitem>   */

public List<Serviceitem> getServiceItems(Integer parkId) {

Session session = DaoHelp.getInstance().getSession();

String hql = "from Serviceitem where parkinfoid =:parkId and status=‘02‘";

Query query = session.createQuery(hql);   query.setInteger("parkId", parkId);

List<Serviceitem> list = query.list();

if (list != null && !list.isEmpty()) {

return list;

} else {

return null;

}

}

}

时间: 2024-08-05 07:41:35

sql:判断+sql+子查询+关联查询的相关文章

【二】MyBatis的SQL映射文件 ----- 一对一的关联查询

现在假设数据库中有两张表,一张是班级表,另一张是教师表.一个班级只有一名班主任老师,而一个老师只能担任一个班的班主任,这就是我们所说的一对一关联关系.现在要求,查询班级表的同时也要查询出老师的信息.两张表的数据如下所示: 教师表: 班级表: 创建表的SQL语句如下(MySQL数据库): CREATE TABLE teacher( t_id INT PRIMARY KEY AUTO_INCREMENT, t_name VARCHAR(20) ); CREATE TABLE class( c_id

JAVA-Unit03: SQL(基础查询) 、 SQL(关联查询)

Unit03: SQL(基础查询) . SQL(关联查询) 列别名 当SELECT子句中查询的列是一个函数 或者表达式时,那么查询出来的结果集 中对应的该字段的名字就是这个函数或者 表达式的名字.为此可以为这一列添加 别名,这样结果集中该字段就使用别名 作为该列的名字. 若希望别名区分大小写或者含有空格,那么 该别名可以使用双引号括起来. SELECT ename,sal*12 "s al" FROM emp AND,OR AND优先级高于OR,可以通过括号 提高优先级. SELECT

MySQL多表关联查询与存储过程

1.多表关联查询 --  **************关联查询(多表查询)**************** -- 需求:查询员工及其所在部门(显示员工姓名,部门名称) -- 1.1 交叉连接查询(不推荐.产生笛卡尔乘积现象:4 * 4=16,有些是重复记录) SELECT empName,deptName FROM employee,dept; -- 需求:查询员工及其所在部门(显示员工姓名,部门名称) -- 多表查询规则:1)确定查询哪些表   2)确定查询哪些字段   3)表与表之间连接条件

MyBatis:学习笔记(3)——关联查询

MyBatis:学习笔记(3)--关联查询 关联查询 理解联结 SQL最强大的功能之一在于我们可以在数据查询的执行中可以使用联结,来将多个表中的数据作为整体进行筛选. 模拟一个简单的在线商品购物系统,如果我们将用户信息和订单信息都保存在user表中,这样就不存在联结关系,因为我们仅仅操作一张表就好. 但是这是非常不明智的选择,举例来说,一个用户可以拥有多个订单,如果保存在一个表中,势必会导致用户信息的多次出现,因为每个订单绑定的用户信息都是相同的. 所以我们尽量要将不同的信息存储与不同的表中,但

mysql-(四)-关联查询

建立数据表 //部门表create table dept( id int primary key, deptName varchar(20) ) //员工表 create table employee( id int primary key, empName varchar(20), deptId int , --部门名称 CONSTRAINT employee_dept_fk FOREIGN KEY(deptId) references dept(id) 外键名称 外键 参考表(参考字段) )

18 12 06 sql 的 基本语句 查询 条件查询 逻辑运算符 模糊查询 范围查询 排序 聚合函数 分组 分页 连接查询 自关联 子查询

-- 数据的准备 -- 创建一个数据库 create database python_test charset=utf8; -- 使用一个数据库 use python_test; -- 显示使用的当前数据是哪个? select database(); -- 创建一个数据表 -- students表 create table students( id int unsigned primary key auto_increment not null, name varchar(20) default

Yii2中多表关联查询(join、joinwith) with是不执行sql的

Yii2中多表关联查询(join.joinwith) 我们用实例来说明这一部分 表结构 现在有客户表.订单表.图书表.作者表, 客户表Customer (id customer_name) 订单表Order (id order_name customer_id book_id) 图书表 (id book_name author_id) 作者表 (id author_name) 模型定义 下面是这4个个模型的定义,只写出其中的关联 Customer class Customer extends \

(一)SQL关联查询的使用技巧 (各种 join)

---恢复内容开始--- (一)SQL关联查询的使用技巧 (各种 join) 这几天因为工作的时候,发现自己的sql语句基础不是很好,特意研究了一下,发现sql语句真的是博大精深,sql语句不仅是要查出来你想要的数据,更讲究查询的效率,因为在查询大量数据时往往会因为数据量大,造成效率很低,再加上前后台数据的交互,造成了访问延迟等等的一系列问题. 在我们的日常工作中往往用到很多的查询方式,例如 嵌套查询,关联查询,子查询等等,就我而言,我感觉关联查询是最容易学习,和效率最高的.下面就我总结的关联查

SQL语句面试题目:一般查询和高级子查询

几个表 employees 表: EMPLOYEE_ID              NUMBER(6) FIRST_NAME                VARCHAR2(20) LAST_NAME                 VARCHAR2(25) EMAIL                               VARCHAR2(25) PHONE_NUMBER       VARCHAR2(20) HIRE_DATE                  DATE JOB_ID