【问题标题】:SQL query modification to get count of real return productsSQL查询修改以获取实际退货产品的数量
【发布时间】:2016-09-30 09:15:07
【问题描述】:

很少有像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))

【问题讨论】:

  • 请提供样本数据。什么是return table,return_products.order_id和order_nr哪个是销售订单?

标签: mysql sql


【解决方案1】:

与那里的订单表无关,但您有 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)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-05-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-04-18
    • 2021-04-05
    • 2020-12-16
    相关资源
    最近更新 更多