1

3つの異なるテーブルからNameの列値を取得したい

  Table1 contains Name
  Table2 contains Name, BAmt
  Table3 contains Name, RAmt

次に、3つのテーブルすべてから名前を取得します。テーブルにこれらの値が含まれているとしましょう

   Table1:     Table2:                    Table3:
   Name        Name        BAmt           Name         RAmt
1. Jack      1.Alice       1000         1.Mark         5000
2. Mark      2.Jack        500          2.Tarzon       1000
3. Ricky                                3.Beth         5500
                                        4.Jack         100

ここで、すべての名前を含むテーブルが必要です(名前の繰り返しはありません)。新しいテーブルには、理想的にはこれらの値が含まれている必要があります

  Name    BAmt      RAmt
1.Jack    500       100
2.Mark              5000
3.Ricky
4.Alice   1000    
5.Tarzon            1000
6.Beth              5500

ここでは繰り返しを無視していますが、テーブルからそれらの列の必要な値を取得しています。どのようなselectステートメントを使用する必要がありますか。これが私が思うことですが、私はその間違ったアプローチを推測します:

    Statement statement1 = db.createStatement("SELECT DISTINCT Name,BAmt,RAmt FROM Table1,Table2,Table3");
                    statement1.prepare();
                    statement1.execute();

ご案内ください。

4

2 に答える 2

3

そのアウトラインを取得するには、すべてのテーブルを結合する必要があります。

select Name, 
       ifnull (sum(BAmt), 0) BAmt,
       ifnull (sum(RAmt), 0) RAmt
from
(
  select Name, 
         null BAmt,
         null RAmt
    from Table1
   union all
  select Name,
         BAmt,
         null
    from Table2
   union all
  select Name,
         null,
         RAmt
    from Table3
) allTables
group by Name
order by Name

編集:ヌルをゼロに置き換えるように更新されました。ifnullのドキュメントを参照してください。

于 2012-05-16T10:29:27.923 に答える
0

参加はそれを処理します:

select name, bamt, ramt from table1 t1 left outer join table2 t2 on t1.name = t2.name left outer join table3 on t1.name = t3.name order by name;
于 2012-05-16T10:39:53.297 に答える