2016-08-15 3 views
0

Ich habe zwei Tabellen und beide table2 und table3 können einen Betrag für die key von Tabelle1 enthalten.MySQL SUM Werte aus 2 Tabellen und JOIN

Ich möchte diese Werte zusammenfassen und sie als amount darstellen.

SELECT table1.mg_key 
    , table1.mg_name 
    , table1.time 
    , table2.mg_amount + table3.mg_amount amount 
    , table2.mg_key + table.mg_key 
    FROM table 
    LEFT 
    JOIN table2 
    , table3 
    ON table1.mg_key = key 
    AND key = amount 

Es funktioniert nicht, also mache ich wahrscheinlich etwas falsch?

+0

Lesen Sie die [Join] (http://dev.mysql.com/doc/refman/5.7/en/join.html) -Syntax, dann schauen Sie genau hin, was Sie tun (falsch). –

+0

meinst du 'von table1' .... mach einfach nicht beitritt so ist das so 1996 – Drew

+0

@Drew Ja' table1'. Nun, ich fand ein Tutorial, das es so gemacht hatte ... – Borsn

Antwort

1

http://sqlfiddle.com/#!9/65dca/1/0

SELECT 
table1.mg_key, table1.mg_name, table1.time, 
IFNULL(table2.mg_amount,0) + IFNULL(table3.mg_amount,0) as amount 
FROM table1 
LEFT JOIN table2 ON table1.mg_key = table2.mg_key 
LEFT JOIN table3 ON table1.mg_key = table3.mg_key; 

Wenn dies nicht Ihre Frage nicht beantworten, erstellen Sie bitte ein SQL Fiddle uns besser verstehen zu helfen.

+0

Es funktioniert so. Ich habe gerade IFNULL (table2.mg_amount, 0) + IFNULL (table3.mg_amount, 0) als Betrag hinzugefügt, weil es nichts angezeigt hat, als der Wert 0 war. Ist das eine gute/zuverlässige Methode? – Borsn

+0

@Borsn Ja. Ich habe das in meine Antwort aufgenommen. – GuiSim

1

Sie sollten nicht "Schlüssel", "Zeit" verwenden, da dies reservierte Wörter sind. Das Teilen deiner Tabellenschemas oder das Erstellen einer Geige würde helfen.

SELECT 
table1.mg_key, table1.mg_name, table1.time,--time= pick other name 
IFNULL(table2.mg_amount,0) + IFNULL(table3.mg_amount,0) as amount, 
IFNULL(table2.mg_key,0) + IFNULL(table1.mg_key,0) as pkey 
FROM table1 
LEFT JOIN table2 
ON table1.mg_key = key --key= reserved; pick other name 
LEFT JOIN table3 
ON key = amount --key= reserved; pick other name 
+0

@Andrew Ich habe einen neuen Namen für den Schlüssel ausgewählt. Aber es funktioniert nicht. – Borsn