表  TT1
字段是L1,L2
 L1    L2
2      1
3      1
4      1
5      1
表 TT2
字段是M1,M2
M1     M2
bb1     1
bb2     2
bb3     3
bb4     4条件 M2 = L1-L2要求用SQL处理后,所得结果为 L1    L2    M1
2      1     bb1
3      1     bb2
4      1     bb3
5      1     bb4用Select union Select 与目标有差距。
请问各位大侠,应该用SQL的哪种形式
谢谢

解决方案 »

  1.   

    SQL语句SELECT TT1.L1, TT1.L2, TT2.M1
    FROM TT1 INNER JOIN
          TT2 ON TT1.L1 - TT1.L2 = TT2.M2
      

  2.   

    这个好像这样就可以了:SELECT tt1.l1, tt1.l2, tt2.m1
    FROM tt1, tt2
    WHERE m2=l1-l2;
      

  3.   


    这种用法在网上没找到,用起来比1楼的简单。
    SELECT TT1.L1, TT1.L2, TT2.M1 
    FROM TT1 INNER JOIN 
          TT2 ON TT1.L1 - TT1.L2 = TT2.M2谢谢,网上两位解答。
      

  4.   

    SELECT tt1.l1, tt1.l2, tt2.m1
    FROM tt1, tt2
    WHERE m2=l1-l2;
      

  5.   

    在网上所有的解都你这种写法。SELECT tt1.l1, tt1.l2, tt2.m1
    FROM tt1, tt2
    WHERE m2=l1-l2;
    这是一种偷懒的方法。
      

  6.   

    SELECT tt1.l1, tt1.l2, tt2.m1 
    FROM tt1, tt2 
    WHERE m2=l1-l2; 
    偷懒的方法与下式比较简单实用,程序较短。
    SELECT TT1.L1, TT1.L2, TT2.M1 
    FROM TT1 INNER JOIN 
          TT2 ON TT1.L1 - TT1.L2 = TT2.M2 
    下面程序用偷懒方法,要比用正规的编程方法要短一些。
    Sub c()
      Dim Rst As ADODB.Recordset
      Dim Sql As String
      Sql = "Select tt1.lineStartPoint0,tt1.lineEndPoint0 , " & _
          " tt1.lineStartPoint1,tt1.lineEndPoint1, " & _
          " round(tt2.DimMeasurement,3),tt2.DimMText " & _
          " From [Line$] tt1, [Dim$] tt2" & _
          " Where abs(round(DimMeasurement,3)) = abs(round(lineStartPoint0 - lineEndPoint0,3)) " & _
          " Or " & _
          "abs(round(DimMeasurement,3)) = abs(round(lineStartPoint1 - lineEndPoint1,3))"
      Set Rst = ConnectRst(Sql)
      With Sheet2
        .Range("A:Z").ClearContents
        .Range("A2").CopyFromRecordset Rst
      End With  
    End Sub
      

  7.   

    Select A.L1,A.L2,B.M1 From TT1 A inner join TT2 B on A.L1-A.L2=B.M2