2013-05-20 4 views
2

처음 게시했습니다.mysql - 값이 일치하고 최신 값이 최신 인 레코드

나는이 보고서의 문제점을 파악하려고 노력해 왔습니다. 이 보고서에서 가장 최근에 판매 된 제품의 일련 번호를 표시하고 싶지만 (+ 가격이 아닌) 표시하고 싶습니다.

제품이 최근에 판매되었고 마지막으로 반품되지 않은 경우 판매 된 것으로 표시되었는지 확인하고 싶습니다.

이것은 내가 수행 한 작업입니다. 하위 쿼리가 필요할 수도 있지만 첫 번째 부분을 파악할 수는 없습니다.

SELECT 
    ps.serial,p.upc,p.name,so.date_sold 
FROM 
    store_orders so 
    LEFT JOIN store_order_products sop ON so.id = sop.order_id 
    LEFT JOIN products p ON sop.product_id = p.id 
    LEFT JOIN product_serials ps ON ps.serial = sop.product_serial 
WHERE 
    (CAST(so.date_sold AS DATE) BETWEEN '2013-4-15' AND '2013-5-15') 
    AND ps.deleted = '0' AND sop.price > 0 
ORDER BY 
    sop.id DESC 
LIMIT 10 

마지막으로 판매 된 제품 대신 마지막으로 판매 된 제품을 반환합니다.

`ID Serial Price 
1: 8332-83 10.00 
2: 8332-83 -10.00 
Dont want to see this because it was returned last, not sold last 

ID Serial Price 
2: 8332-82 10.00 
1: 8332-82 -10.00 
This was sold last not returned so looking to see this serial` 

도와주세요. 미리 감사드립니다. 조

+1

당신은 샘플 입력/출력을 제공 할 수 있습니까? –

+0

내 질문을 더 잘 정리 한 희망. – user2402877

+0

아직도 도움이 필요하십니까? 그냥 가격이 0보다 큰 그룹을 찾고 있습니다. ??? – user2402877

답변

1

네, 감사합니다. 그러나 이런 종류의 문제가있는 다른 사람들을 위해, 여기 있습니다.

TRIPLE NESTY는, 롤

SELECT * FROM (
SELECT * FROM (
SELECT 
    so.id,sop.product_serial,p.upc,sop.price,p.name,so.date_sold 
FROM 
    store_orders so 
    LEFT JOIN store_order_products sop ON so.id = sop.order_id 
    LEFT JOIN products p ON sop.product_id = p.id 
    LEFT JOIN product_serials ps ON ps.serial = sop.product_serial 
WHERE ps.deleted = '0' AND so.store_id = '$store_id' 
ORDER BY 
    sop.id DESC 
LIMIT 1000 
) AS t 
GROUP BY t.product_serial 
) AS t2 
WHERE t2.price > 0 
관련 문제