2017-05-05 75 views
0

你好老鄉社區,MYSQL,總在同一行多次

這是我第一次發佈我一直在尋找一個天asnwer現在我有點餓。

我有一個表在MySQL,看起來像這樣

Package | Speakers | Microphone 
1  | 2  | 1 
2  | 2  | 1 
3  | 4  | 2 

我想要做的是能夠選擇任何包裝很多次我想,總結總計,看看有多少庫存它將採取。

星期六具有3×封裝1個的和1x包總共3

所以我將需要10個揚聲器和5米的麥克風

這是一個PHP文件我當前的代碼

$sql = "SELECT SUM(speaker) as Speaker, SUM(microphone) as Microphone FROM TABLE where package in('".$pk1."', '".$pk2."', '".$pk3."' '".$pk4."')"; 

我該如何選擇多次同一行,以便它能夠正確地總和

回答

0

使用與CASE表達式相乘。

SELECT SUM(speaker * 
      CASE Package 
       WHEN 1 THEN 3 
       WHEN 3 THEN 1 
      END) AS Speaker, 
     SUM(microphone * 
      CASE Package 
       WHEN 1 THEN 3 
       WHEN 3 THEN 1 
      END) AS Microphone 
FROM yourTable 
WHERE Package IN (1, 3) 

而不是重複CASE表達式,而是可以加入一個返回數量的子查詢。

SELECT SUM(t.speaker * q.quantity) AS Speaker, SUM(t.microphone * q.quantity) AS Microphone 
FROM yourTable AS t 
JOIN (SELECT 1 AS package, 3 AS quantity 
     UNION 
     SELECT 3 AS package, 1 AS quantity) AS q 
ON t.package = q.package 
WHERE t.package IN (1, 3) 

如果您在PHP中動態構建查詢,這應該更容易使用。

+0

我很感激這個幫助,但我可能不像我想象的那樣使用MYSQL。我將在數據庫中重複每個包3次,並且每個包都選擇一個不同的選項,而不是多個選項。謝謝 –