回 帖 发 新 帖 刷新版面

主题:帮我写一下这个SQL呗.

表一: 
单位编号(主)  单位名称 
1001          S    
1002          Q 
1003          L  
表二: 
单位编号(普)  部门编号(主)  部门名称 
1001          11          A 
1001          12          B 
1001          13          C 
1002          14          D 
1002          15          E 
1003          16          F 
表三: 
部门编号(普)  科编号(主)  科名称 
11          1101        AA 
11          1102        BB 
12          1201        CC 
13          1301        DD 
14          1401        EE 
15          1501        FF 
表四: 
科编号(普)    人员编号(主)  姓名 
1101          110101    AAA 
1101          110102    BBB 
1102          110201    CCC 
1301          130101    DDD 
1401          140101    EEE 
1501          150101    FFF 
1501          150101    GGG 

表一表二一对多,表二表三一对多,表三表四一对多联接. 
目的: 
我现在知道单位编号,如1001 
我要查询单位编号为1001的单位中一共有多少人,SQL该如何写,请教了! 

回复列表 (共8个回复)

沙发

我认为把表改成这样,编程要容易的多。
表一: 
单位编号(主)  单位名称 
1001          S    
1002          Q 
1003          L  
表二: 
单位编号(普)  部门编号(主)  部门名称 
1001          100101          A 
1001          100102          B 
1001          100103          C 
1002          100201          D 
1002          100202          E 
1003          100301          F 
表三: 
部门编号(普)  科编号(主)  科名称 
100101        10010101        AA 
100101        10010102        BB 
100102        10010201        CC 
100103        10010301        DD 
100201        10020101        EE 
100301        10030101        FF 
表四: 
科编号(普)    人员编号(主)  姓名 
10010101      10010101001    AAA 
...

板凳

按您这么改,如何实现,能说一下吗?

3 楼

SELECT 表一.单位编号,COUNT(表四.姓名) FROM 表一 INNER JOIN 表二 ON 表一.单位编号=表二.单位编号 INNER JOIN 表三 ON 表三.部门编号=表二.部门编号 INNER JOIN 表四 ON 表四.科编号=表三.科编号 WHERE 表一.单位编号="1001"

4 楼

按 LuckyLine 老师的编号:

COUNT FOR 科编号="1001" TO 人数

?"单位编号=1001 的共:",人数," 人"

5 楼

编码的意义:
部门编号:
单位编号(普) + 部门编号

科编号(主):
单位编号(普) + 部门编号 + 科编号(主)

人员编号:
单位编号(普) + 部门编号 + 科编号(主) + 人员编号

6 楼

[quote]SELECT 表一.单位编号,COUNT(表四.姓名) FROM 表一 INNER JOIN 表二 ON 表一.单位编号=表二.单位编号 INNER JOIN 表三 ON 表三.部门编号=表二.部门编号 INNER JOIN 表四 ON 表四.科编号=表三.科编号 WHERE 表一.单位编号="1001"
[/quote]

我要好好研究一下这句,不懂再请教老师..

7 楼

[quote]按您这么改,如何实现,能说一下吗?[/quote]
VFP:
select count(*) from 表四 where 人员编号='1001' into array cntRenyuan
MS SQL:
select count(*) into table cntRenyuan from 表四 where 人员编号 like '1001%'

8 楼

感谢!

我来回复

您尚未登录,请登录后再回复。点此登录或注册