2016-08-03 62 views
0

我有以下SQL,我想通过PHP在MySQL数据库上运行。PHP - 在SQL查询中传递mysql @variable

错误

syntax error check the 
manual that corresponds to your MySQL server version for the right syntax to use near '@rn := if(@prevDate=eve_date 

SQL

SELECT eve_date, 
     cust_name, 
     item_id, 
     Sum(item_bundle_size) sumsize 
FROM (SELECT eve_date, 
       cust_name, 
       item_id, 
       item_bundle_size, 
       @rn := IF(@prevdate = eve_date, IF (@previtem = item_id, @rn, 
         IF (@previtem := item_id, @rn + 1 
         , @rn + 
         1)), 
         IF 
          (@prevdate := eve_date, 
         IF (@previtem := item_id, 1, 1), 1 
        ) 
        ) rn 
     FROM cust_sales_hist 
       CROSS JOIN (SELECT @rn := 0, 
            @prevdate := NULL, 
            @previtem := NULL) t 
     WHERE cust_name = 'Cust1' 
       AND eve_date BETWEEN '2015-08-01' AND '2015-08-05' 
     ORDER BY eve_date, 
        item_bundle_size DESC) t 
WHERE rn <= 4 
GROUP BY eve_date, 
      cust_name, 
      item_id 
ORDER BY eve_date, 
      cust_name, 
      sumsize DESC 

我抬起头,所以该通知关于将查询分成几个部分的例子。然而,就我而言,由于输出的要求,看起来我必须将其作为一个整体运行。这个查询的SQL小提琴在这里是在需要的情况下 - http://sqlfiddle.com/#!9/3a5d08/5

我真的很感谢任何帮助让我搬到这里请。

+0

那么,你的php代码在哪里? –

+0

对不起。没有意识到我没有这样做。将在几分钟内更新这个问题。 – usert4jju7

+0

@u_mulder - 实际上,把代码放在这里是很难的,我使用一个类来管理数据库的东西。我有超过100个查询,我已经与退出系统工作。所以,SQL执行系统。我经历了SQL准备,SQL执行和SQL提取结果的阶段。目前情况下的问题只是'@'符号。如果你能指导我有没有办法逃避它,那就太棒了。我也尝试过'\ @'希望它能起作用(没有真正的逻辑,只是尝试了几件事),但它并不明显。 – usert4jju7

回答

0

正如上面Barmer所建议的那样,代码有一个奇怪的特殊字符,它将查询拆分为两部分,因此是问题。解决这个问题。感谢Barmer