2013-10-08 209 views
0

假設我有以下查詢,它給了我下載和兌換的優惠券數量,按日期分組:[編輯](我無法修改此查詢)[編輯]從sql查詢獲取特定數據

$sql = "SELECT DATE(datetime) , 
          SUM(CASE WHEN datetime!='' THEN 1 ELSE 0 END) As downloaded , 
          SUM(CASE WHEN used = 1 AND DATE(datetime) != '' THEN 1 ELSE 0 END) AS redeemed 

        FROM Promotion_Redeem 
        WHERE datetime BETWEEN '2013-10-01' AND '2013-10-04' 
        GROUP BY DATE(datetime)"; 

我怎樣才能得到下載和贖回的總和?這應該是$ SQL中,某處......下面是這個查詢結果:

row number 1 
array (size=3) 
0 => string '2013-10-01' (length=10) 
1 => string '126' (length=3) 
2 => string '11' (length=2) 
row number 2 
array (size=3) 
0 => string '2013-10-02' (length=10) 
1 => string '106' (length=3) 
2 => string '5' (length=1) 
row number 3 
array (size=3) 
0 => string '2013-10-03' (length=10) 
1 => string '228' (length=3) 
2 => string '12' (length=2) 
row number 4 
array (size=3) 
0 => string '2013-10-04' (length=10) 
1 => string '149' (length=3) 
2 => string '9' (length=1) 

[編輯]波夫你可以看到,我得到4行,每行一個蒙山一個數組...我想,例如,這些數組的第三個字段的總和......在我的例子中,這將等於37(也就是說,有37個優惠券可以兌換)[/編輯] 我在使用這個數據結構後得到了這個數據結構:

while ($row = mysql_fetch_row($result)) { 
      echo "row number ".++$i; 
      var_dump($row); 

     } 

在此先感謝

+4

**對於'mysql_ *'函數不再支持**,它們是[**官方不推薦使用的**](https://wiki.php.net/rfc/mysql_deprecation),**不再維護**,將來會[**刪除**](http://php.net/manual/en/function.mysql-connect.php#warning)。您應該使用[PDO](http://php.net/pdo)或[MySQLi](http://php.net/msqli)更新您的代碼,以確保您的項目未來的功能。 – Neal

+0

不確定你需要什麼......所有收到的數據總和?如果你刪除了「GROUP BY」部分,你會得到結果嗎? –

+0

@vp_arth在我的問題中,你可以看到我得到4行,每一個都有一個數組......我想,例如,這些數組中的第三個字段的總和......在我的例子中,這將等於37(這意味着,贖回37張優惠券) –

回答

1

修改你的PHP循環像這樣:

$downloaded=0; 
$redeemed=0; 
while ($row = mysql_fetch_row($result)) { 
     echo "row number ".++$i; 
     $downloaded+=$row[1]; 
     $redeemed+=$row[2]; 
     var_dump($row); 
    } 
echo "Downloaded: $downloaded<br>";  
echo "Redeemed: $redeemed<br>"; 
+0

我需要按日期對它們進行分組,因爲我使用它來繪製Google圖表api中的LineGraph ...我想要做的是避免第二個查詢只是爲了得到這筆錢 –

+0

好吧,我編輯了我的答案它的PHP智慧... – geomagas

+0

我用你的解決方案(@bhawin評論相同的東西),但現在當我想再次使用$結果,稍後在代碼中,它保留一個空值...也許我會需要使用mysql_data_seek()來處理...謝謝! –