我有以下表结构,我正在研究其他人的代码,不幸的是仍然掌握这一切。下表是客户和订单的订单(或购买)。 '产品'表(为了更加清晰,我省略了一些列,因为它们对解释问题并不重要)。我添加了我需要编辑的现有查询:
#products table * - primary key
shop_products(product_id, organisation_id, product_name, product_type_id, Guid*, active, quantity, multi_buy...)
#purchases table * - primary key
shop_purchases(purchase_id*, user_id, price, Guid, refunded)
SELECT * FROM `shop_products` `t`
WHERE `t`.`organisation_id`=25679
AND (IF( availability=3,
( SELECT COUNT(*)
FROM shop_product_years
WHERE shop_product_years.Guid = t.Guid
AND shop_product_years.year_id = 10) > 0, (availability=1
OR availability = 2))
AND (multi_buy = 1
OR (multi_buy = 0
AND
( SELECT COUNT(*)
FROM shop_purchases
WHERE shop_purchases.user_id = 5702079181
AND shop_purchases.GUID = t.Guid
AND shop_purchases.refunded = 1) = 0
AND
( SELECT COUNT(*)
FROM shop_purchases_queue
WHERE shop_purchases_queue.user_id = 5702079181
AND shop_purchases_queue.GUID = t.Guid) = 0)
)
AND active=1
AND product_type_id=11)
我基本上想要修改查询,因此如果产品是MULTI BUY(例如multi_buy = 1)且QUANTITY大于0,则计算该项目的现有购买数量(使用Guid)。如果该用户的该项目的购买数量少于QUANTITY,那么我们可以获取产品并在返回的行中显示该行,OTHERWISE因为数量不比计数少,那么我们无法在行中显示该产品。
这个想法是一个产品只能订购一定次数(但只有当数量大于0时)一旦为该用户订购的次数和项目已达到设定数量,用户就不会更能订购这个。
我希望这是有道理的 - 如果您希望我进一步澄清,请告诉我。