2017-04-27 17 views
0

我有一張桌子,如下圖所示。如何SELECT SUM列價格WHERE type = 1 AND type = 2?我只需要一個查詢中type = 1的價格總數和type = 2的價格總數。如何在1個SQL查詢中的2個條件下獲得2個總和?

+-----+------+-------+ 
| PID | Type | Price | 
+-----+------+-------+ 
| 1 | 1 | 100 | 
| 2 | 2 | 65 | 
| 3 | 1 | 300 | 
| 4 | 1 | 200 | 
| 5 | 2 | 50 | 
+-----+------+-------+ 

我都試過,但它返回一個錯誤:

$this->db->select("SUM(price) as total1, (SELECT SUM(price) where type=2) as total2"); 
$this->db->from('table'); 
$this->db->where('type', '1'); 
$query = $this->db->get(); 
$result = $query->result(); 

我也試着寫我的查詢,但無濟於事一些其他的方式,和所有其他方面,我在SO是發現對於我的簡單查詢來說太複雜了。我認爲這應該是一個非常簡單的查詢。

+0

當前查詢的結果是什麼? –

+0

這個查詢返回正確的計算'選擇SUM(價格)作爲total1,(選擇SUM(價格)從堆棧where類型= 2)作爲total2從堆棧where type = 1' –

+0

@RahulSharma它返回錯誤「您在您的錯誤SQL語法「 – Charas

回答

1

試試這個:

$this->db->select("SUM(price) as total1, (SELECT SUM(price) from table where type=2) as total2"); 
$this->db->from('table'); 
$this->db->where('type', '1'); 
$query = $this->db->get(); 
$result = $query->result(); 
+0

謝謝隊友!我正在尋找 – Charas

0

這會給你你的兩個總計:

SELECT 
    SUM(IF(type=1,price,0)) AS Total1, 
    SUM(IF(type=2,price,0)) AS Total2 
FROM table 
WHERE type in (1,2) 
+0

這不會返回正確的總數,但在2行中,我期待像total1和total2在一行中,還有其他類型,我不想計算,只需鍵入1和類型2. – Charas

+0

請參閱編輯的答案。這應該只返回1行。 –

0

在我看來group by是最好的選擇(選項2)爲您的要求。

選項1:

$query = $this->db->query("select SUM(CASE WHEN type= '1' then 1 else 0 end) as total1, SUM(CASE WHEN type= '2' then 1 else 0 end) as total2 from table"); 
$result = $query->result(); 

PS:也可以在類型列中使用組通過。

與GROUP BY(選項2):

$this->db->select("SUM(type)"); 
$this->db->from('table'); 
$this->db->group_by('type'); 
$query = $this->db->get(); 
$result = $query->result(); 
+0

這兩個方法都返回兩行結果,我期待結果返回一行,如array [0]('total1'=> 500,'total2'=> 1000) – Charas

+0

它是單列有兩列,只有在這裏返回兩列。 –

+0

@Charas您接受的答案和我給出的答案都以相同的格式返回相同的數據。 (只是指出,因爲你提到它沒有以正確的格式返回)。順便說一句,歡呼你爲你解答答案。:) –

0

我只是想在MySQL。

試試這個:

SELECT type, SUM(price) FROM test GROUP BY type 
+0

是的,這工作,但結果返回兩行,我期待結果只返回一行,如(數組('total1'=> 500,'total2'=> 250)) – Charas

3
$sql=select price from table where type=1"; 
$exesql=mysqli_query($sql) or die(mysqli_error()); 
while($row=mysql_fetch_array($exesql)){ 
$tpeOneprice=$tpeOneprice+$row['price']; 


} 
echo $tpeOneprice; 

這樣對2型也就是這樣的。