SELECT o.FEPOCode,os.SizeName,
A.ID AS ContactID,oc.OrderID,os.OrderID,
oc.CombName,o.OrderID,ocsd.Quantity,
ocsd.FreeSampleQuantity,ocsd.ChargeSampleQuantity
FROM 
(
SELECT gc.ID FROM GarmentContract gc
WHERE EXISTS 
(
SELECT DISTINCT gcf.GamentContactID FROM GarmentContract_FEPO gcf
)
) A
LEFT JOIN 
(
SELECT DISTINCT gcf.GamentContactID,gcf.OrderiD
FROM GarmentContract_FEPO gcf
) B
ON A.ID = B.GamentContactID
LEFT JOIN [Order] o
ON B.OrderiD = o.OrderID
LEFT JOIN OrderSize os
ON o.OrderID = os.OrderID
LEFT JOIN OrderColor oc
ON os.OrderID = oc.OrderID
LEFT JOIN OrderColorSizeDetail ocsd
ON os.ItemID=ocsd.OrderSizeID AND oc.ItemID = ocsd.OrderColorID取出的结果有重复值,关键是在:SELECT DISTINCT gcf.GamentContactID,gcf.OrderiD FROM GarmentContract_FEPO gcf这一句,GamentContactID有重复,OrderiD 没重复,DISTINCT 没起作用,求办法?

解决方案 »

  1.   

    SELECT gc.ID FROM GarmentContract gc
        WHERE EXISTS 
        (
            SELECT DISTINCT gcf.GamentContactID FROM GarmentContract_FEPO gcf
        )你的这个exists查询做什么用? exists是关联查询,可是你的exits子查询与GarmentContract没有任何的关联,在这里面distinct当然没什么作用
      

  2.   

    关键应该在这 SELECT gc.ID FROM GarmentContract gc
        WHERE EXISTS 
        (
            SELECT DISTINCT gcf.GamentContactID FROM GarmentContract_FEPO gcf
        )这里你似乎是想要建立一种关系但是你并没有写出来这种关系
    SELECT DISTINCT gcf.GamentContactID,gcf.OrderiD
        FROM GarmentContract_FEPO gcf
    这里不应该加DISTINCT 关键字的
      

  3.   

    谢谢HEROWANG的回答,我GarmentContract_FEPO 是GarmentContract 的从表,本来是用IN来缩小查询范围的.这里DISTINCT没用是指LEFT JOIN下的那个没起作用.因为Orderid不会重复,可我既想取出Orderid又想把GamentContactID 去除重复。
      

  4.   

    谢谢,这里的EXISTS 本来是这么写的:gc.ID IN(.....)