有两个表如下,想根据课程表中的教室把最小教室人数求出来,请前辈指点一下,小弟先感谢了。教室表
教室名称  教室容量
a        100
b        50 
c        200
d        80
课程表    
课程编号  教室1   教室2  教室3   教室最小人数
1001     a      d      a      (求a和d最小值)

解决方案 »

  1.   

    http://topic.csdn.net/u/20080614/17/22e73f33-f071-46dc-b9bf-321204b1656f.html
      

  2.   

    SELECT 
        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
      

  3.   

    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 课程编号
      

  4.   

    SELECT 
        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
      

  5.   


    --只显示课程编号 , 教室最小人数
    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.课程编号
      

  6.   

    pivot and unpivot 把数据转换成列!