繁体   English   中英

SQL从具有不同列名的两个不同表中选择行

[英]SQL select rows from two different tables with different column names

我想从两个不同的表(TABLE_A和TABLE_B)中选择行。 我正在使用oracle db和hibernate。 这是我的桌子:

这是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 db中获得这些结果以及将这些结果绑定到java中的休眠对象?

尝试这样的事情

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM