我的数据库中有“表1”和“表2”两张表,表1是所有数据的汇总表,表2是一个人物关系表,表示的是表1中任意两个人物的关系及关系值(SexMin和SexMax),“表3”是通过查询得到的结果表。
今天我试了好几种嵌套语句都无法查询出符合“表3”要求的结果,请大神帮帮我,谢谢。

解决方案 »

  1.   

    用mssql写的,大概差不多,楼主试试:
    --测试数据
    if not object_id(N'Tempdb..#T1') is null
    drop table #T1
    Go
    Create table #T1([Name] nvarchar(22),[Min] decimal(18,7),[Max] decimal(18,7))
    Insert #T1
    select N'A1',0.2,1.1 union all
    select N'A2',1.2,2.1 union all
    select N'A3',2.2,3.1 union all
    select N'A4',3.2,4.1 union all
    select N'B1',4.2,5.1 union all
    select N'B2',5.2,6.1 union all
    select N'B3',6.2,7.1 union all
    select N'B4',7.2,8.1 union all
    select N'B5',8.2,9.1 union all
    select N'B6',9.2,10.1 union all
    select N'B7',10.2,11.1 union all
    select N'B8',11.2,12.1
    GO
    if not object_id(N'Tempdb..#T2') is null
    drop table #T2
    Go
    CREATE TABLE #T2
        (
          [SexA] NVARCHAR(22) ,
          [SexB] NVARCHAR(22) ,
          [SexMin] DECIMAL(18, 7) ,
          [SexMax] DECIMAL(18, 7)
        )
    Insert #T2
    select N'A1',N'B4',10.5,20.6 union all
    select N'A2',N'B5',11.5,21.6 union all
    select N'A3',N'B6',12.5,22.6 union all
    select N'A4',N'B7',13.5,23.6
    Go
    --测试数据结束
    SELECT  a.SexA ,
            b.Min ,
            b.Max ,
            a.SexB ,
            c.Min ,
            c.Max ,
            a.SexMin ,
            a.SexMax
    FROM    #T2 a
            JOIN #T1 b ON a.SexA = b.Name
            JOIN #T1 c ON a.SexB = c.Name
      

  2.   

    select a.*,b.*,t.*
    from 表2 t inner join 表1 a on t.sexA=a.name
    inner join 表1 b on t.sexB=b.name