2016-08-03 70 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