业务关系是这样的:
1.主表 租赁表
2.一个租赁单对应多个结算单
3.一个租赁单对应多个机器租赁单 (主表)
BillID SType
1 打印A型
2 打印B型
3 打印C型
4 打印A型结算单 (从表)
[ID]    BillID(billid就是租赁单的billid)        dMoney(金额)
1 3 600.00
2 2 405.50
3 2 35454.00
4 1 842.00机器列表(从表)
[ID]    BillID(billid就是租赁单的billid)        Model(机器型号,不是主键,但是唯一)
1 4 Sb50_S53
2 2 fff_78aA
3 3 sdfsdfs
4 2 sdfsdfsd然后是要做一个结算单明细表SELECT c.XX,c.xxxx...........
FROM  dbo.结算单 a LEFT OUTER JOIN
      dbo.租赁单 d ON a.BillID = d.ID left outer join
      dbo.机器列表 c ON a.BillID=c.BillID
问题在红色部分(上面写的逻辑不符合要求的),如何取到对应   机器列表中 billid=a.billid 中的第一条记录即可.....

解决方案 »

  1.   

    你写的语句没有问题,关联也是正确的。
    问题是你最后要得到什么结果?你使用left outer join,起始表和之后的关联表顺序是有关系的。
    不同的要求,关联顺序也是不同的。
      

  2.   

    SELECT c.XX,c.xxxx...........
    FROM  dbo.结算单 a LEFT OUTER JOIN
          dbo.租赁单 d ON a.BillID = d.ID left outer join      dbo.机器列表 c ON a.BillID=c.BillID
    红色这一行错了吧。应该是a.BillID = d.BillID 吧? 
      

  3.   

    SELECT c.XX,c.xxxx...........
    FROM  dbo.结算单 a LEFT JOIN dbo.租赁单 d
          ON a.BillID = d.BillID
          LEFT JOIN dbo.机器列表 c  
          ON a.BillID=c.BillID
      

  4.   

    Chinajiyong,纠正书写错误,但是我主要是处理两个从表之间的业务,没有涉及到主表
      

  5.   

    Quote: 引用 5 楼 lizeyuan8238386 的回复:

    我主要是处理两个从表之间的业务,没有涉及到主表
    Quote:

    不能完全明白你的意思,你是不是想这样?:
    SELECT c.XX,c.xxxx...........
    FROM  dbo.结算单 a 
    INNER JOIN dbo.租赁单 d ON a.BillID = d.BillID 
    ...
    where a.BillID = 1
      

  6.   

    SELECT top 1 *
    FROM  dbo.结算单 a LEFT JOIN dbo.租赁单 d
          ON a.BillID = d.BillID
          LEFT JOIN dbo.机器列表 c  
          ON a.BillID=c.BillID