2010-03-23 37 views
12

có thể đặt bí danh tất cả cột bằng tiền tố, trong một lựa chọn? Tôi có một nhóm các bảng trong một db Oracle mà tôi cần phải kết hợp với nhau, và hầu hết chúng có cùng tên cột. Tôi muốn có một cái gì đó giống nhưbí danh tất cả các cột trong truy vấn có tiền tố

select MAGIC_ADD_PREFIX("PREFIX", *) from TABLE 

và có một kết quả như

+---------+----------+----------+ 
|PREFIX_ID|PREFIX_FOO|PREFIX_BAR| 
+---------+----------+----------+ 
|...  |   |   | 

ATM là điều duy nhất tôi có thể nghĩ là một cái gì đó chumsky thích

select ID PREFIX_ID, FOO PREFIX_FOO, BAR PREFIX_BAR from TABLE 

nhưng nó xấu xí như địa ngục và error-prone

==== giải thích thêm ====

Vấn đề với

select TABLE.*,... 

là tôi đang sử dụng java + JDBC driver để lấy các cột, và các phương pháp java.sql.ResultSet (resultset.getInt("COLUMNNAME"), .getString("COLUMNNAME") ...) không hỗ trợ cú pháp "TABLENAME.COLUMNAME ".

nếu tôi làm (giản thể, không cheks lỗi ...)

ResultSet rs = mkResultSet("select * from table_a, table_b"); 
rs.next(); 
System.out.println(rs.getInt("table_a.id")); 

tôi nhận được một SQLException với tên cột không hợp lệ như nhắn

+0

dup: http://stackoverflow.com/questions/329931/sql-select-join-is-it-possible-to- prefix-all-columns-as-prefix – dforce

Trả lời

1

Bạn có thể làm

select a.*, b.* from table_a a, table_b b where..... 

Hoặc bạn có thể tạo chế độ xem trên các bảng cơ sở như

create view a_vw as select a.col1 a_col1, a.col2 a_col2... 

Bạn có thể tạo SQL để tạo a_vw khá dễ dàng từ việc chọn tên cột từ user_tab_columns

Các vấn đề liên quan