日期:2014-05-17  浏览次数:20766 次

明细表统计出错了,详情请点击....
业务关系是这样的:
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 中的第一条记录即可.....

------解决方案--------------------
你写的语句没有问题,关联也是正确的。
问题是你最后要得到什么结果?你使用left outer join,起始表和之后的关联表顺序是有关系的。
不同的要求,关联顺序也是不同的。
------解决方案--------------------
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