有两个表如下,想根据课程表中的教室把最小教室人数求出来,请前辈指点一下,小弟先感谢了。教室表
教室名称 教室容量
a 100
b 50
c 200
d 80
课程表
课程编号 教室1 教室2 教室3 教室最小人数
1001 a d a (求a和d最小值)
教室名称 教室容量
a 100
b 50
c 200
d 80
课程表
课程编号 教室1 教室2 教室3 教室最小人数
1001 a d a (求a和d最小值)
A.课程编号,
A.教室1,
A.教室2,
A.教室3,
B.教室容量 AS 教室最小人数
FROM 课程表 AS A
CROSS APPLY(
SELECT TOP(1) 教室名称,教室容量
FROM 教室表
WHERE A.教室1=教室名称
OR A.教室2=教室名称
OR A.教室3=教室名称
ORDER BY 教室容量
) AS B
(
select a.课程编号 , b.教室容量 from 课程表 a , 教室表 b where a.教室1 = b.教室名称
union all
select a.课程编号 , b.教室容量 from 课程表 a , 教室表 b where a.教室2 = b.教室名称
union all
select a.课程编号 , b.教室容量 from 课程表 a , 教室表 b where a.教室3 = b.教室名称
) t
group by 课程编号
A.课程编号,
A.教室1,
A.教室2,
A.教室3,
(SELECT TOP 1 教室容量
FROM 教室表
WHERE A.教室1=教室名称
OR A.教室2=教室名称
OR A.教室3=教室名称
ORDER BY 教室容量) AS 教室最小人数
FROM 课程表 AS A
--只显示课程编号 , 教室最小人数
select 课程编号 , min(教室容量) 教室最小人数 from
(
select a.课程编号 , b.教室容量 from 课程表 a , 教室表 b where a.教室1 = b.教室名称
union all
select a.课程编号 , b.教室容量 from 课程表 a , 教室表 b where a.教室2 = b.教室名称
union all
select a.课程编号 , b.教室容量 from 课程表 a , 教室表 b where a.教室3 = b.教室名称
) t
group by 课程编号
--显示详细信息
select m.* , n.教室最小人数 from 课程表 m ,
(
select 课程编号 , min(教室容量) 教室最小人数 from
(
select a.课程编号 , b.教室容量 from 课程表 a , 教室表 b where a.教室1 = b.教室名称
union all
select a.课程编号 , b.教室容量 from 课程表 a , 教室表 b where a.教室2 = b.教室名称
union all
select a.课程编号 , b.教室容量 from 课程表 a , 教室表 b where a.教室3 = b.教室名称
) t
group by 课程编号
) n
where m.课程编号 = n.课程编号