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

Posted 街角的守望者

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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;   

}  

}

}

以上是关于sql:判断+sql+子查询+关联查询的主要内容,如果未能解决你的问题,请参考以下文章

SQL基础教程(第2版)第5章 复杂查询:5-3 关联子查询

sql 语句查询判断是不是为空并关联

读SQL进阶教程笔记05_关联子查询

6-SQL子查询

SQL----关联子查询

sql关联子查询