2016-08-29 21 views
0

我的表是串聯行,我知道,表可怕,但老: http://sqlfiddle.com/#!9/f2680/1PHP - 從MySQL

+----+-----------------------+----------+------+ 
 
| ID | COUNTRY    | QUANTITY | EACH | 
 
+----+-----------------------+----------+------+ 
 
| 1 | U.S.A     |  1 | 12 | 
 
| 2 | U.K.     |  2 | 3 | 
 
| 3 | GERMANY    | NULL | 3 | 
 
| 4 | FRANCE;GERMANY; U.S.A |  0 | 7 | 
 
| 5 | U.S.A;GERMANY   |  3 | 8 | 
 
| 6 | GERMANY;FRANCE;U.S.A |  1 | 10 | 
 
+----+-----------------------+----------+------+

<?php 
 
include 'bd_cnx.php'; 
 
    $ret =[['Test','Valori livrare']]; 
 
    $sql = "SELECT SUBSTRING_INDEX(COUNTRY, ';', 1) AS COUNTRY, 
 
       SUM(COALESCE(IF(QUANTITY = NULL OR QUANTITY = 0,1,QUANTITY),1) * EACHCOL) AS PRICE 
 
      FROM table1 
 
      GROUP BY COUNTRY"; 
 

 
    $result = $conn->query($sql); 
 
    if ($result->num_rows > 0){ 
 
    while($row = $result->fetch_assoc()){ 
 
     $ret[] =[$row['COUNTRY'], floatval($row['PRICE'])]; 
 
    } 
 
} 
 
    echo json_encode($ret); 
 
?>
我的SQL代碼返回行:法國= 3,德國= 6,德國= 12,美國= 12,美國= 7

我想將來自COUNTRY列的結果值(使它們唯一)分組,然後使SUM和finaly生成下一個表單:FRANCE = 3; GERMANY = 18; U.S.A = 19。我將在下面的表格中介紹谷歌圖表中的這些行:['country','value']。 謝謝!

+0

那麼,有什麼問題? –

+1

http://stackoverflow.com/a/32620163 – Drew

回答

1

使用該查詢額外的選擇...組通過對第一查詢:

select COUNTRY, sum(PRICE) from(
SELECT 
    SUBSTRING_INDEX(COUNTRY, ';', 1) AS COUNTRY, 
    SUM(COALESCE(IF(QUANTITY = NULL OR QUANTITY = 0,1,QUANTITY),1) * EACHCOL) AS PRICE 
FROM table1 
GROUP BY COUNTRY) as t 
group by COUNTRY; 
+0

工作,非常感謝你的回答! – ster

+0

@ster因此接受答案。 :) –

+0

@ Andrej Ludinovsckov對於那些將有我的問題,並公開回復這篇文章http://stackoverflow.com/questions/39212444/mysql-php-unique-values-from-rows謝謝! – ster