SQL查询修改以获取实际返回产品的数量

时间:2016-09-30 09:15:08

标签: mysql sql

拥有少量数据库表格,例如order_productsreturn_products

return_products表列:     idrma_idorder_idproduct_idorder_nrcommentadmin_commentadd_date

order_products表列:     idorder_idproduct_idquantitypricesum

每行向每个产品返回产品,但order_products,有数量列

现在有这样的SQL查询来获取订单,具体取决于搜索的产品:

SELECT `id`, `saved` 
FROM `orders` 
WHERE 1 AND (`id` IN(
    SELECT `order_id` 
    FROM `order_products` 
    WHERE `product_id` IN (1,2,3,4,5)))
BY id DESC 
LIMIT 0, 30

现在需要检查订单和产品ID是否为return和return_products表

即。 如果在订单中搜索id 2的产品,我需要检查该产品是否存在于退货表中,计数和计数是否等于order_products数量,不需要在列表中显示该订单,但如果退货数量小于order_products数量超过需要显示的数量(order_products.quantity - COUNT(return_products))

1 个答案:

答案 0 :(得分:0)

与订单表无关,但您有order_products / return_products数量比较的逻辑。

select op.product_id, op.quantity, count(rp.id)
from order_products op
left join return_products rp on rp.product_id = op.product_id --maybe need to join on order_id too ? Not really clear
group by op.product_id, op.quantity
--where op.product_id in (1, 2, 3, 4, 5)
having op.quantity <> count(rp.id)