A:SELECT distinct OI.OrderNo, OI.OrderItemNo, OI.OrderAmount, ISNULL(OI.UnitAmount,0), OI.OrderAmount - ISNULL(OI.UnitAmount,0) AS DiffAmount,
OI.ID, OI.SapOrderNo, OI.MOQ, OI.DisCount, OI.DealerCode, OI.ComDeliverDate, OI.ComOrderDate, OI.ComDeliverCycle,
OI.CommodityNo, OI.SubAmount , T.IsCosted
FROM OrderItmes OI 
LEFT JOIN 
(
SELECT E.IsCosted,EI.OrderItemNo 
FROM dbo.EnterStore E 
INNER JOIN dbo.EnterStoreItem EI ON E.EnterStoreNo = EI.EnterStoreNo
) T
ON OI.OrderItemNo = T.OrderItemNo
B:SELECT distinct OI.OrderNo, OI.OrderItemNo, OI.OrderAmount, ISNULL(OI.UnitAmount,0), OI.OrderAmount - ISNULL(OI.UnitAmount,0) AS DiffAmount,
OI.ID, OI.SapOrderNo, OI.MOQ, OI.DisCount, OI.DealerCode, OI.ComDeliverDate, OI.ComOrderDate, OI.ComDeliverCycle,
OI.CommodityNo, OI.SubAmount
FROM OrderItmes OI 
A 为什么比 B 查询出来的记录多些,求指教

解决方案 »

  1.   

    LEFT JOIN 
    (
    SELECT E.IsCosted,EI.OrderItemNo 
    FROM dbo.EnterStore E 
    INNER JOIN dbo.EnterStoreItem EI ON E.EnterStoreNo = EI.EnterStoreNo
    ) T
    你这里面与 OrderItmes  是1对多的当然就可能多了,
      

  2.   

    left join是左连接 左边表的连接字段全部显示 右边没有的记录显示为空 所以记录要多些
      

  3.   

    left join 左联接, 左边表记录全部显示, 右边表有关联记录显示关联记录,否则显示NULL
      

  4.   


    我是左边有的就显示对应的  T.IsCosted ,否则  T.IsCosted 就显示 null
    但是记录数应该还是 左边的记录数啊现在如果不增加记录数,依然要显示  T.IsCosted,应该怎么写啊