2011-07-28 2 views
2

각 조건 카테고리의 최소 가격을 선택하려고합니다. 일부 검색을 수행하고 아래 코드를 작성했습니다. 그러나 선택한 필드에 대해 null이 표시됩니다. 어떤 해결책? 당신이 Sales.Sale_ID이 필요하지 않은 경우SQL에서 그룹 당 최소 행을 선택하십시오.

SELECT Sales.Sale_ID, Sales.Sale_Price, Sales.Condition 
FROM Items 
LEFT JOIN Sales ON (Items.Item_ID = Sales.Item_ID 
AND Sales.Expires_DateTime > NOW() 
AND Sales.Sale_Price = (
SELECT MIN(s2.Sale_Price) 
FROM Sales s2 
WHERE Sales.`Condition` = s2.`Condition`)) 
WHERE Items.ISBN =9780077225957 

답변

2

좀 더 복잡한 해결책이지만, Sale_ID가 포함 된 솔루션은 아래에 있습니다.

SELECT TOP 1 Sale_Price, Sale_ID, Condition 
FROM Sales 
WHERE Sale_Price IN (SELECT MIN(Sale_Price) 
        FROM Sales 
        WHERE 
        Expires_DateTime > NOW() 
        AND 
         Item_ID IN  
         (SELECT Item_ID FROM Items WHERE ISBN = 9780077225957) 
        GROUP BY Condition) 

'TOP 1'은 1 개 이상의 판매가 동일한 최소 가격을 갖고 있으며, 하나만 반품하고 싶을 경우를 대비하여 제공됩니다.

(내부 검색어는 @Michael Ames 대답에서 직접 가져옴)

2

,이 솔루션은 간단하다 :

SELECT MIN(Sale_Price), Condition 
FROM Sales 
WHERE Expires_DateTime > NOW() 
AND Item_ID IN 
    (SELECT Item_ID FROM Items WHERE ISBN = 9780077225957) 
GROUP BY Condition 

행운을 빌어 요!