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

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

有三张表

第一张是人员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 PointNet++的onnx模型只能使用一次
  • ¥20 西南科技大学数字信号处理
  • ¥15 有两个非常“自以为是”烦人的问题急期待大家解决!
  • ¥30 STM32 INMP441无法读取数据
  • ¥15 R语言绘制密度图,一个密度曲线内fill不同颜色如何实现
  • ¥100 求汇川机器人IRCB300控制器和示教器同版本升级固件文件升级包
  • ¥15 用visualstudio2022创建vue项目后无法启动
  • ¥15 x趋于0时tanx-sinx极限可以拆开算吗
  • ¥500 把面具戴到人脸上,请大家贡献智慧,别用大模型回答,大模型的答案没啥用
  • ¥15 任意一个散点图自己下载其js脚本文件并做成独立的案例页面,不要作在线的,要离线状态。