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条)

报告相同问题?

悬赏问题

  • ¥20 Python安装cvxpy库出问题
  • ¥15 用前端向数据库插入数据,通过debug发现数据能走到后端,但是放行之后就会提示错误
  • ¥15 python天天向上类似问题,但没有清零
  • ¥30 3天&7天&&15天&销量如何统计同一行
  • ¥30 帮我写一段可以读取LD2450数据并计算距离的Arduino代码
  • ¥15 C#调用python代码(python带有库)
  • ¥15 矩阵加法的规则是两个矩阵中对应位置的数的绝对值进行加和
  • ¥15 活动选择题。最多可以参加几个项目?
  • ¥15 飞机曲面部件如机翼,壁板等具体的孔位模型
  • ¥15 vs2019中数据导出问题