拥有少量数据库表格,例如order_products
和return_products
return_products表列:
id
,rma_id
,order_id
,product_id
,order_nr
,comment
,admin_comment
,add_date
order_products表列:
id
,order_id
,product_id
,quantity
,price
,sum
每行向每个产品返回产品,但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))
答案 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)