a449088680 2011-12-08 13:20
浏览 527
已采纳

三张没有外键关联的表做联合查询,应该如何写

有三张表

第一张是人员person表
字段:
ID SEX

第二张表是部门表dept
字段:
ID districtmark
其中districtmark有两个值,1和2 1表示部门属于市级,2表示部门属于区级

第三张表是部门人员表personDept
字段有:
ID personid deptid

每个人员都属于一个部门,三张表都没有外键,第一张人员表和第二张部门表通过第三张的部门人员表的personid和deptid关联起来

我想查出所有属于[b]区级[/b]部门的[b]人员[/b]出来,而且还能加上多条件的模糊查询语句,就是还能用where 1=1;
下面是sql语句,我在数据库里面可以执行

select distinct * from persona inner join personDept b on a.id = b.personid inner join dept c on b.deptid = c.id where c.districtmark = 2;

这是我写的hql语句,但有错

//模糊查询
string queryCondition=”;

if (id != null) {
queryCondition += " and (a.id like '%"+id+"%')";
}
if (sex != null) {
queryCondition += " and a.sex='" + sex + "'";
}
//hql语句
String query = "select distinct a from TOrgPerson as a, TOrgDeptpersons as b, TOrgDept as c where a.id = b.personid and b.deptid=c.id and c.districtmark = 2 " + " where 1=1 " + queryCondition;

//执行query查询语句

上面的hql应该怎么改呢?

  • 写回答

4条回答 默认 最新

  • wuyunmin 2011-12-08 14:34
    关注

    //hql语句
    String query = "select distinct a from TOrgPerson as a, TOrgDeptpersons as b, TOrgDept as c [color=red]where [/color]a.id = b.personid and b.deptid=c.id and c.districtmark = 2 " + " [color=red]where [/color]1=1 " + queryCondition;

    你的hql语句中有两个where,先删除一个,在试试。别的也没看出什么问题来。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(3条)

报告相同问题?

悬赏问题

  • ¥15 HLs设计手写数字识别程序编译通不过
  • ¥15 Stata外部命令安装问题求帮助!
  • ¥15 从键盘随机输入A-H中的一串字符串,用七段数码管方法进行绘制。提交代码及运行截图。
  • ¥15 TYPCE母转母,插入认方向
  • ¥15 如何用python向钉钉机器人发送可以放大的图片?
  • ¥15 matlab(相关搜索:紧聚焦)
  • ¥15 基于51单片机的厨房煤气泄露检测报警系统设计
  • ¥15 Arduino无法同时连接多个hx711模块,如何解决?
  • ¥50 需求一个up主付费课程
  • ¥20 模型在y分布之外的数据上预测能力不好如何解决