2017-11-23 3 views
1

Wir haben zwei MySQL-Tabellen, die, wenn sie mit einem Standard-Join verbunden werden, doppelte Ergebnisse erzeugen. Der Grund dafür ist, dass das gemeinsame Feld, mit dem sie verbunden werden, nicht eindeutig ist. Wir haben mehrere Varianten ausprobiert, sind jedoch nicht in der Lage, die richtigen Ergebnisse zu erzielen. Hoffentlich kann uns jemand in die richtige Richtung weisen.

Table A/ws_511_1

Table B/ws_583_1

Die richtige Ausgabe sollte wie folgt aussehen:

Correct output

Die Abfrage, die uns am nächsten an der richtigen Ausgang gelangt ist (nicht alle Spalten hier aufgenommen wurden):
MySQL bei Tabellen mit doppelten Indexwerten beitreten

SELECT a.col_3 AS Data, SUM(a.col_4) AS `October 2016`, SUM(a.col_5) AS `November 2016`, SUM(b.col_4) AS `February 2017`, SUM(b.col_5) AS `March 2017` FROM ws_511_1 a LEFT JOIN (SELECT * FROM ws_583_1 b GROUP BY col_3) b ON b.col_3 = a.col_3 WHERE a.id!='1' GROUP BY a.col_3

Die Ausgabe dieser Abfrage ist:

Incorrect output

Sie feststellen, dass Oktober und November korrekt sind, aber die verbundenen Spalte Ergebnisse sind falsch.

Antwort

0

Sie konnten die Gruppe Ergebnis für die linke Tabelle

SELECT a.col_3 AS Data 
    , SUM(a.col_4) AS `October 2016` 
    , SUM(a.col_5) AS `November 2016` 
    , b.`February 2017` 
    , b.`March 2017` 
    FROM ws_511_1 a 
    LEFT JOIN (
     SELECT col_3 
     , SUM(b.col_4) AS `February 2017` 
     , SUM(b.col_5) AS `March 2017` 
     FROM ws_583_1 b 
     GROUP BY col_3 
) b ON b.col_3 = a.col_3 
    WHERE a.id!='1' 
    GROUP BY a.col_3 , , b.`February 2017`, b.`March 2017` 
+0

Dank so viel. Funktioniert perfekt. Owe du ein Bier !! – claytont

+0

@claytont danke .. das erste Mal, dass ich in Ihrer Gegend bin .. ich möchte – scaisEdge