主题:帮我写一下这个SQL呗.
pengwei0417
[专家分:0] 发布于 2008-05-29 17:25:00
表一:
单位编号(主) 单位名称
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个回复)
沙发
LuckyLine [专家分:1940] 发布于 2008-05-29 18:12:00
我认为把表改成这样,编程要容易的多。
表一:
单位编号(主) 单位名称
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
...
板凳
pengwei0417 [专家分:0] 发布于 2008-05-29 19:25:00
按您这么改,如何实现,能说一下吗?
3 楼
cbl518 [专家分:57140] 发布于 2008-05-29 19:37:00
SELECT 表一.单位编号,COUNT(表四.姓名) FROM 表一 INNER JOIN 表二 ON 表一.单位编号=表二.单位编号 INNER JOIN 表三 ON 表三.部门编号=表二.部门编号 INNER JOIN 表四 ON 表四.科编号=表三.科编号 WHERE 表一.单位编号="1001"
4 楼
cbl518 [专家分:57140] 发布于 2008-05-29 19:53:00
按 LuckyLine 老师的编号:
COUNT FOR 科编号="1001" TO 人数
?"单位编号=1001 的共:",人数," 人"
5 楼
cbl518 [专家分:57140] 发布于 2008-05-29 19:59:00
编码的意义:
部门编号:
单位编号(普) + 部门编号
科编号(主):
单位编号(普) + 部门编号 + 科编号(主)
人员编号:
单位编号(普) + 部门编号 + 科编号(主) + 人员编号
6 楼
pengwei0417 [专家分:0] 发布于 2008-05-30 08:56:00
[quote]SELECT 表一.单位编号,COUNT(表四.姓名) FROM 表一 INNER JOIN 表二 ON 表一.单位编号=表二.单位编号 INNER JOIN 表三 ON 表三.部门编号=表二.部门编号 INNER JOIN 表四 ON 表四.科编号=表三.科编号 WHERE 表一.单位编号="1001"
[/quote]
我要好好研究一下这句,不懂再请教老师..
7 楼
LuckyLine [专家分:1940] 发布于 2008-05-30 09:58:00
[quote]按您这么改,如何实现,能说一下吗?[/quote]
VFP:
select count(*) from 表四 where 人员编号='1001' into array cntRenyuan
MS SQL:
select count(*) into table cntRenyuan from 表四 where 人员编号 like '1001%'
我来回复