2013-05-20 34 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` 

请帮忙。 在此先感谢。 Joe

+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