2016-05-04 171 views
1

我在MySQL中試過CREATE VIEW但我沒有得到我所需要的。MySQL Query with LEFT JOIN,SUM和GROUP BY

我有兩個表,servicios

+-------------+------------+----------+ 
| id_servicos | fecha  | cantidad | 
+-------------+------------+----------+ 
| 1   | 2016-05-02 | 2  | 
| 2   | 2016-05-03 | 3  | 
| 3   | 2016-05-03 | 5  | 
+-------------+------------+----------+ 

actuacion

+--------------+--------------+--------+ 
| id_actuacion | clv_servicio | grupo | 
+--------------+--------------+--------+ 
| 1   | 1   | RED | 
| 2   | 1   | RED | 
| 3   | 2   | BLUE | 
| 4   | 4   | ORANGE | 
| 5   | 3   | RED | 
+--------------+--------------+--------+ 

,我所要的輸出與此類似:

RED, 7 
BLUE, 2 
ORANGE, 4 

所以我的查詢看起來像這樣

SELECT actuacion.grupo, 
     SUM(servicios.cantidad) AS total 
FROM (actuacion 
JOIN servicios ON actuacion.clv_servicio = servicios.id_servicos) 
GROUP BY actuacion.grupo 

,其結果是

RED, 9 
BLUE, 2 
ORANGE, 4 

我認爲你有日期之前匹配(出生日期),以便然後量(cantidad)等的總和不添加紅豆集團兩次 我需要的RED的結果是7

任何幫助,非常感謝。

+0

嘗試更好地解釋爲什麼RED的結果是7.什麼你總結嗎? – arilia

+0

所以,根據提供的數據,似乎你的問題是重複的數據 –

回答

1

您可以在用作派生表的查詢中的actuacion表中找到唯一組合,然後加入該查詢。

這應該給你結果你想:

Select t.grupo, 
     Sum(servicios.cantidad) As total 
From (select distinct clv_servicio, grupo from actuacion) as t 
Join servicios On t.clv_servicio = servicios.id_servicos 
Group By t.grupo 
+1

完美的作品,這是我想要的。非常感謝你。 – Jose

+0

因爲當我覺得這個查詢給了我這個錯誤:#HY000View的SELECT包含FROM子句中的子查詢 – Jose

+0

@Jose哦好的。我忘了MySQL對視圖有特別的限制。一種解決方案是爲子查詢創建一個單獨的視圖,然後在主視圖中加入。這可能無法帶來好的表現,但如果我記得正確的話,您將無法使用索引。 – jpw

0

你可以使用子查詢,並在下面用GROUP BY

SELECT grupo, 
     SUM(s.cantidad) total 
FROM (SELECT clv_servicio, 
      grupo 
     FROM actuacion a 
     GROUP BY clv_servicio, grupo 
    ) x 
JOIN servicios s ON x.clv_servicio = s.id_servicos 
GROUP BY grupo