Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/72.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 带条件的复杂SQL查询_Mysql_Sql_Database - Fatal编程技术网

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的基础上的