select distinct T_车型_轴承.编号, 车型, 轮对轴承型号 = a.轴承型号,
齿端轴承型号 = a.轴承型号, 刷端轴承型号 =a.轴承型号,
齿端抱轴型号 = a.轴承型号, 刷端抱轴型号 = a.轴承型号,
传动比, 测点号
from T_轴承 a,T_车型_轴承, T_车型
where
T_车型.编号 = T_车型_轴承.车型编号
and exists
(select 轴承型号 from T_轴承 where a.编号 = T_车型_轴承.轮对轴承编号)

解决方案 »

  1.   

    select 
        b.编号,
        c.车型, 
        轮对轴承型号 = max(case when a.轴承型号 = c.轮对轴承编号 then a.轴承型号 else null end),
        齿端轴承型号 = max(case when a.轴承型号 = c.齿端轴承编号 then a.轴承型号 else null end),
        刷端轴承型号 = max(case when a.轴承型号 = c.刷端轴承编号 then a.轴承型号 else null end),
        齿端抱轴型号 = max(case when a.轴承型号 = c.齿端抱轴编号 then a.轴承型号 else null end),
        刷端抱轴型号 = max(case when a.轴承型号 = c.刷端抱轴编号 then a.轴承型号 else null end),
        b.传动比, 
        b.测点号
    from 
        T_轴承 a, T_车型_轴承 b, T_车型 c
    where
        c.编号 = b.车型编号
    group by
        b.编号,
        c.车型,
        b.传动比, 
        b.测点号
      

  2.   

    USE SurfaceManage
    Go
    Create VIEW V_车型_轴承
    AS
    select 
    t.编号, 
    车型, 
    轮对轴承型号 = a.轴承型号,
    齿端轴承型号 = b.轴承型号, 
    刷端轴承型号 = c.轴承型号,
    齿端抱轴型号 = d.轴承型号, 
    刷端抱轴型号 = e.轴承型号,
    t.传动比, 
    t.测点号
    from T_车型 t1 
    join T_车型_轴承 t on t1.编号=t.车型编号
    left join T_轴承 a on t.轮对轴承编号=a.编号
    left join T_轴承 b on t.齿端轴承编号=b.编号
    left join T_轴承 c on t.刷端轴承编号=c.编号
    left join T_轴承 d on t.齿端抱轴编号=d.编号
    left join T_轴承 e on t.刷端抱轴编号=e.编号
      

  3.   

    现在有了两种方式,但我想知道哪种方式更好,SQL SERVER 2000中有“执行时间的获取方式”吗?
    以及下列两种方式产生的连接记录个数:
    1、“from T_轴承 a, T_车型_轴承 b, T_车型 c”;
    2、from T_车型 t1 
    join T_车型_轴承 t on t1.编号=t.车型编号
    left join T_轴承 a on t.轮对轴承编号=a.编号
    left join T_轴承 b on t.齿端轴承编号=b.编号
    left join T_轴承 c on t.刷端轴承编号=c.编号
    left join T_轴承 d on t.齿端抱轴编号=d.编号
    left join T_轴承 e on t.刷端抱轴编号=e.编号
    1、提供者:libin_ftsafe(子陌红尘),非常感谢您的参与(我作了一下修改),我觉得您挺牛的,有单独的联系方式吗,以后可以探讨
    USE SurfaceManage
    Go
    IF EXISTS (SELECT name FROM sysobjects 
             WHERE name = 'V_车型_轴承' AND type = 'V')
       DROP VIEW V_车型_轴承
    GO
    Create VIEW V_车型_轴承
    AS
    SELECT
        b.编号,
        c.车型, 
        轮对轴承型号 = max(case when a.编号 = b.轮对轴承编号 then a.轴承型号 else null end),
        齿端轴承型号 = max(case when a.编号 = b.齿端轴承编号 then a.轴承型号 else null end),
        刷端轴承型号 = max(case when a.编号 = b.刷端轴承编号 then a.轴承型号 else null end),
        齿端抱轴型号 = max(case when a.编号 = b.齿端抱轴编号 then a.轴承型号 else null end),
        刷端抱轴型号 = max(case when a.编号 = b.刷端抱轴编号 then a.轴承型号 else null end),
        b.传动比, 
        b.测点号
    from 
        T_轴承 a, T_车型_轴承 b, T_车型 c
    where
        c.编号 = b.车型编号
    group by
        b.编号,
        c.车型,
        b.传动比, 
        b.测点号2、提供者:zjcxc(邹建),非常感谢邹建大侠的参与,有时我想单独发消息给您,不知怎么联系。
    USE SurfaceManage
    Go
    IF EXISTS (SELECT name FROM sysobjects 
             WHERE name = 'V_车型_轴承' AND type = 'V')
       DROP VIEW V_车型_轴承
    GO
    Create VIEW V_车型_轴承
    AS
    select 
    t.编号, 
    车型, 
    轮对轴承型号 = a.轴承型号,
    齿端轴承型号 = b.轴承型号, 
    刷端轴承型号 = c.轴承型号,
    齿端抱轴型号 = d.轴承型号, 
    刷端抱轴型号 = e.轴承型号,
    t.传动比, 
    t.测点号
    from T_车型 t1 
    join T_车型_轴承 t on t1.编号=t.车型编号
    left join T_轴承 a on t.轮对轴承编号=a.编号
    left join T_轴承 b on t.齿端轴承编号=b.编号
    left join T_轴承 c on t.刷端轴承编号=c.编号
    left join T_轴承 d on t.齿端抱轴编号=d.编号
    left join T_轴承 e on t.刷端抱轴编号=e.编号
      

  4.   

    天,SQL也太长了吧?建议你用SQLserver自带的查询优化器优化一下
      

  5.   

    谢谢邹建大侠与子陌红尘及上面各位同仁的参与,真心感谢你们,有联系方式不妨告诉我。
    我自我介绍一下:本人主要是面向底层及嵌入式系统的开发,掌握的开发工具主要是VC、VB,自认为对面向对象技术及软件工程比较了解。有两年以上开发经验,对COM、复杂多线程的调度、驱动程序等技术很有兴趣,本人邮箱地址:[email protected],望有志同道和者多联系。