2016-05-04 12 views
1

Ich versuchte CREATE VIEW in MySQL, aber ich bekomme nicht, was ich brauche.MySQL Query mit LINKS JOIN, SUM und GROUP BY

Ich habe zwei Tabellen, servicios:

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

und actuacion:

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

und ich möchte, dass die Ausgabe in etwa so aussehen:

RED, 7 
BLUE, 2 
ORANGE, 4 

Also meine Frage ist sieht so aus

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

und das Ergebnis ist

RED, 9 
BLUE, 2 
ORANGE, 4 

Ich glaube, Sie vor Daten übereinstimmen müssen (fecha), um dann die Summe der Mengen (cantidad) und so fügen Sie nicht die zweimal RED Gruppe ich die Notwendigkeit Ergebnis von RED ist 7

Jede Hilfe wird sehr geschätzt.

+0

versuchen besser zu erklären, warum Ergebnis von RED 7. Was ist mit Summierst du? – arilia

+0

Also, basierend auf den bereitgestellten Daten, scheint es, dass Ihr Problem doppelte Daten –

Antwort

1

Sie können die eindeutigen Kombinationen in der Tabelle actuacion in einer Abfrage finden, die als abgeleitete Tabelle verwendet wird, und mit dieser Tabelle verknüpfen.

Dies sollte Ihnen das gewünschte Ergebnis:

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

Works perfekt ist, ist es, was ich wollte. vielen Dank. – Jose

+0

Weil, wenn ich denke, diese Abfrage gibt mir diesen Fehler: # HY000View SELECT enthält Unterabfrage in der FROM-Klausel – Jose

+0

@Jose Oh ok. Ich habe vergessen, dass MySQL bestimmte Einschränkungen für Ansichten hat. Eine Lösung wäre, eine separate Ansicht für die Unterabfrage zu erstellen und stattdessen mit dieser in der Hauptansicht zu verbinden. Dies kann jedoch keine gute Leistung bringen, da Sie nicht in der Lage sein werden, Indizes zu verwenden, wenn ich mich recht entsinne. – jpw

0

Sie könnten Unter Abfrage verwenden und GROUP BY in folgenden:

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