2016-02-23 80 views
-1

我有兩個表像mysql的4加盟問題

table 1 
cd_art ct   rez 
001ms 7933.00  0 
001ms 0.00  0 
001ms 10994.00 0 


table 2 
cd_art an_ct an2_ct 
001ms 12.00 7 
001ms 0.00 7 

我想這樣的結果:

cd_art ct   an_ct an2_ct 
001ms 18927.00 12  14 

謝謝!

我已經與內試圖加入,但結果是不正常

SELECT t1.cd_art, 
sum(t1.ct) as ct, 
sum(t2.an_ct) as an_ct, 
sum(t2.an2_ct) as an2_ct 
FROM table_1 t1 
INNER JOIN table_2 t2 
on t1.cd_art = t2.cd_art 
GROUP BY t1.cd_art 

result: 
cd_art ct   an_ct an2_ct 
001ms 37854.00 36.00 42.00 
+0

它是否也是表2列的SUM? – mitkosoft

+2

加油。嘗試一下。 – Strawberry

+0

向我們展示一些你的努力。我們不應該爲你做你的工作。 – aribeiro

回答

-1

試試這個:

select t.cd_art,sum(t.ct),sum(t.an_ct),sum(t.an2_ct) from(
SELECT 
    t1.cd_art , 
    t1.ct as ct, 
    0 as an_ct, 
    0 as an2_ct 
FROM 
    table1 t1 
UNION ALL 
SELECT 
t2.cd_art, 
    0 as ct, 
    t2.an_ct as an_ct, 
    t2.an2_ct as an2_ct 
FROM 
    table2 t2 
) t 
group by t.cd_art 

SQLFIDDLE DEMO

+0

我已經嘗試這一點,但結果不是正常,CT,an_ct和an2_ct的總和(37854.00 \t 36.00 \t 42.00) – AlexBasa

+0

@AlexBasa: - 更新我的答案。請現在檢查 –

+0

在我的版本的mysql不工作子查詢。 – AlexBasa

1

您正在做內部multiplicating行加入像那樣(3行table1 * 2行table2 = 6行)。當進行SQL查詢查永諾的首次加入是格式化你的結果(總和+ GROUP BY),那麼你會看到你有6條結果之前是正確的。 因此,要解決您的問題,首先總結每個表上的值,然後加入它們:

SELECT t1.cd_art, t1.ct, t2.an_ct, t2.an2_ct 
FROM (SELECT cd_art, sum(ct) as ct FROM table1 GROUP BY cd_art) t1 
INNER JOIN (SELECT cd_art, sum(an_ct) as an_ct, sum(an2_ct) as an2_ct 
      FROM table2 GROUP BY cd_art) t2 ON t2.cd_art = t1.cd_art; 
+0

我知道,但在我的版本的MySQL不工作的子查詢... – AlexBasa

+0

你是什麼意思「子查詢」不工作?你的mysql版本是什麼? – mitkosoft

+0

這似乎是與MySQL引擎4.1版本下的限制,所以在純SQL得到這個結果可能會非常棘手。你可以做兩個請求(我寫的子查詢),然後將它們與數據庫之外的編程語言連接起來嗎?你可以用子查詢創建臨時表,然後發出請求來加入它們嗎? –