2014-03-01 136 views
1

我想從兩個不同表(TABLE_A和TABLE_B)中選擇行。我使用的是oracle db和hibernate。這裏是我的表:SQL從具有不同列名的兩個不同表中選擇行

下面是TABLE_A

+----+--------+---------+-----------+---------------------+---------------------+ 
| ID | AMOUNT | BALANCE | STATUS |  CREATE_DATE  |  END_DATE  | 
+----+--------+---------+-----------+---------------------+---------------------+ 
| 1 |  5 |  5 | FINISHED | 2014-02-27 15:10:20 | 2014-02-27 15:10:20 | 
| 2 |  12 |  17 | TIMED_OUT | 2014-02-27 15:10:20 | 2014-02-27 15:10:20 | 
| 3 |  21 |  38 | COMMITED | 2014-02-27 15:10:20 | 2014-02-27 15:10:20 | 
+----+--------+---------+-----------+---------------------+---------------------+ 

下面是TABLE_B

+----+----------------+---------------+----------------+---------------------+ 
| ID | PAYMENT_AMOUNT | TOTAL_BALANCE | PAYMENT_STATUS | REQUEST_TIMESTAMP | 
+----+----------------+---------------+----------------+---------------------+ 
| 1 |    3 |   23 | FAILED   | 2014-02-27 15:10:20 | 
| 2 |    12 |   11 | FULFILLED  | 2014-02-27 15:10:20 | 
| 3 |    2 |    9 | TIMED_OUT  | 2014-02-27 15:10:20 | 
+----+----------------+---------------+----------------+---------------------+ 

我想要做的是,我需要得到像單個查詢以下結果:

+--------+---------+-----------+---------------------+---------------------+ 
| AMOUNT | BALANCE | STATUS |  DATE   |  END_DATE  | 
+--------+---------+-----------+---------------------+---------------------+ 
|  5 |  5 | FINISHED | 2014-02-27 15:10:20 | 2014-02-27 15:10:20 | 
|  12 |  17 | TIMED_OUT | 2014-02-27 15:10:20 | 2014-02-27 15:10:20 | 
|  21 |  38 | COMMITED | 2014-02-27 15:10:20 | 2014-02-27 15:10:20 | 
|  3 |  23 | FAILED | 2014-02-27 15:10:20 | null    | 
|  12 |  11 | FULFILLED | 2014-02-27 15:10:20 | null    | 
|  2 |  9 | TIMED_OUT | 2014-02-27 15:10:20 | null    | 
+--------+---------+-----------+---------------------+---------------------+ 

的結果是ordered by DATE。列的說明如下:

AMOUNT = TABLE_A.AMOUNT or TABLE_B.PAYMENT_AMOUNT 
BALANCE = TABLE_A.BALANCe or TABLE_B.TOTAL_BALANCE 
STATUS = TABLE_A.STATUS or TABLE_B.PAYMENT_STATUS 
DATE = TABLE_A.CREATE_DATE or TABLE_B.REQUEST_TIMESTAMP 
END_DATE = TABLE_A.END_DATE or null 

有沒有什麼辦法讓這些類型的Oracle數據庫中,並結合這些結果以Java中的Hibernate對象的任何方式的結果呢?

回答

2

嘗試這樣的事情

select * from (
select id as amount, ... from t1 
union all 
select id as amount, ... from t2 
) t order by date 
+0

謝謝,我發現'UNION ALL'和它的工作對我來說:) – sedran

相關問題