Mysql 带条件的复杂SQL查询
我有下面的表结构,不幸的是,我正在处理其他人的代码&仍然在处理这一切。下表是客户的订单(或购买)&“产品”表(为了更加清晰,我省略了一些列,因为它们对于解释问题并不重要)。我已添加了需要编辑的现有查询:Mysql 带条件的复杂SQL查询,mysql,sql,database,Mysql,Sql,Database,我有下面的表结构,不幸的是,我正在处理其他人的代码&仍然在处理这一切。下表是客户的订单(或购买)&“产品”表(为了更加清晰,我省略了一些列,因为它们对于解释问题并不重要)。我已添加了需要编辑的现有查询: #products table * - primary key shop_products(product_id, organisation_id, product_name, product_type_id, Guid*, active, quantity, multi_buy...) #p
#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=1)且数量大于0,则计算该项目的现有购买数量(使用Guid)。如果该用户购买该商品的次数小于数量,则我们可以获取产品并在返回的行中显示该行,否则,由于数量不小于计数,因此我们无法在行中显示该产品
其理念是,产品只能订购设定次数(但仅当数量大于0时),一旦为该用户订购的次数和项目达到设定数量,用户将无法再订购该产品
我希望这是有道理的-如果您希望我进一步澄清,请让我知道。您能添加一个SQL小提琴吗?好主意-我很快就会这么做:)祝您好运。。。SQLFiddle的网站已关闭。。。显然是建立在Coldfusion的基础上的