我现在有三个表sys_users(用户表) id loginname realname
sys_departments(部门表)id  deparment_name  parent_id(本身有上下级关系)
tsys_departments_users(部门用户关系表)depart_id  user_id现在要做这么一个查询用户   所属部门名称  上级部门名称 下级部门名称请问,sql语句应该如何写

解决方案 »

  1.   

    select a.realname,c.deparment_name,d.deparment_name,e.deparment_name
     from sys_users a,tsys_departments_users b,sys_departments c,sys_departments d,sys_departments e
     where a.id=b.user_id and b.depart_id=c.id and c.parent_id=d.id and b.depart_id=e.parent_id;
      

  2.   

    按照上面所给的sql,查询出来数据有重复啊
      

  3.   

    你可以把子部门拼到一起
    select a.realname,c.deparment_name,d.deparment_name,wm_concat(e.deparment_name)
     from sys_users a,tsys_departments_users b,sys_departments c,sys_departments d,sys_departments e
     where a.id=b.user_id and b.depart_id=c.id and c.parent_id=d.id and b.depart_id=e.parent_id
     group by a.realname,c.deparment_name,d.deparment_name;
      

  4.   

    如何能够处理掉这些重复数据呢,
    比如说
    查询出的数据为a   中国移动   根目录  北京移动
    a   中国移动   根目录  上海移动处理成a   中国移动   根目录  北京移动,上海移动
      

  5.   

    wm_concat(e.deparment_name)  是什么意思,,啊。能不能给我讲讲这个语句?