帮忙看下这段SQL怎么写
本帖最后由 nymbian 于 2011-6-2 16:02 编辑SELECT *
FROM staffs
LEFT JOIN department
ON department.department_id = staffs.department_id
WHERE department.department_name = '行政部' //找出行政部直属员工
OR WHERE IN
(SELECT low_department_id
FROM department_department
LEFT JOIN department
ON department.department_id = department_department.high_department_id
WHERE department.department_name = '行政部') //找出行政部下属部门员工
共有三张表
staffs 员工
staff_id序号job_number工号name姓名english_name英文名sex性别position职位department_id
department 部门
department_iddepartment_name
department_department部门之间隶属关系
idhigh_department_idlow_department_id
目的是找出 部门所以员工 包括直属和下属本部员工
这个,你把表结构发以下吧 回复 jeongee 的帖子
表结构已经贴出来了,多谢
heykite 发表于 2011-6-3 10:16 static/image/common/back.gif
如果你的下属部门还有下属部门怎么办??
用两条sql吧,先查询关系部门,然后在查询出所有的员工. ...
有点不明白
能否给出详细sql
先谢了 回复 nymbian 的帖子
感觉麻烦的话,可以这样:
你的用户表加个冗余字段吧,把一级还是二级的id都存进去,一切都简单了 jeongee 发表于 2011-6-3 11:11 static/image/common/back.gif
回复 nymbian 的帖子
感觉麻烦的话,可以这样:
这样有多少级就要加多少冗余字段吧
SELECT *
FROM staffs
WHERE staffs.department_id IN (
(SELECT low_department_id
FROM department_department
WHERE department_department.high_department_id =(
SELECT department.department_id
FROM department
WHERE department.department_name ='行政部' ))
,
(
SELECT department.department_id
FROM department
WHERE department.department_name ='行政部' )
)
写成这样还是报错啊
本帖最后由 visvoy 于 2011-6-3 13:18 编辑
这种子子子查询看的蛋疼,你能不能用2条查询实现? 简单点,用多条SQL语句解决吧. 回复 nymbian 的帖子
不啊,多了就会有其他解决方法的
页:
[1]
2