2015-06-03 32 views
1

我有三個表,如下所示。在MySQl中,如何從多個錶鏈接中獲取一個項目的數據總和

Table 1 
Name Value Details 

A  1  XXA 
B  2  XXB 
C  3  XXC 

Table 2  

Name  Table1 Name Data 
1   A   1234 
2   A   2345 
3   B   4567 
4   C   5678 

而且

Table 3  


Name Table2Data Amount 
Ran1 1234   10 
Ran2 2345   20 
Ran3 4567   30 
Ran4 4567   40 
Ran5 5678   50 
Ran6 1234   60 

我需要查詢的結果類似下面

Total Amount for each item in Table 1     

Table 1 Row 1 (A) Table 1 Row2 (B) Table 1 Row 3 (C) ---- 
     90     70     50   ---- 

我們如何才能達到相同的。從三張表我需要得到的價值,但需要安排在上面的列。

回答

2

您可以使用條件和。就像這樣:

SELECT 
    SUM(CASE WHEN Name='A' THEN Table3.Amount ELSE 0 END) AS A, 
    SUM(CASE WHEN Name='B' THEN Table3.Amount ELSE 0 END) AS B, 
    SUM(CASE WHEN Name='C' THEN Table3.Amount ELSE 0 END) AS C 
FROM 
    `Table1` 
    JOIN Table2 
     ON Table1.Name=Table2.Table1Name 
    JOIN Table3 
     ON Table2.Data=Table3.Table2Data 
+0

實際上,從OP是不是很清楚他是否想把所有三張表合在一起。 –

+0

我不想硬編碼任何列名稱,它應該從其他表中取出,因爲所有表都是動態的,任何時候新值都可以來到表中。 –

+0

同樣只有我當前正在使用,但我面臨的問題是動態表s,所以需要查詢值並生成報告。 –

0

其實,沒有必要爲有條件的資金,你可以從JOIN■使用GROUP BY對行分組在一起。

SELECT 
    Table1.Name, SUM(Table3.Amount) 
FROM 
    Table1 
    JOIN Table2 ON Table1.Name = Table2.Table1Name 
    JOIN Table3 ON Table2.Data = Table3.Table2Data 
GROUP BY Table1.Name 
+0

如果萬一我有一個表,表0,併爲每個表0項,所有其他三個表中有一個條目,第一列應該是表0,然後從table1行作爲下一列。 –

+0

@VeenaSujith你的意思是你想加入另一個表查詢? –

+0

基於一個類別,它可能在第四表格中,鏈接到其他表格,我需要爲表格1中的每一個表格獲取金額。類似於Cat1 - 表格1中每行的同名,Cat2 - 每個表格的金額在table1中的行...像這樣 –

相關問題