Mou*_*hna 2 oracle union plsql zend-framework
我必须选择我想要使用UNION组合的请求:
表1:Table_a,table_b和table_c之间的连接
id_table_a desc_table_a table_b.id_user table_c.field
-----------------------------------------------------------
1 desc1 1 field1
2 desc2 2 field2
3 desc3 3 field3
Run Code Online (Sandbox Code Playgroud)
表2:它也是Table_a,table_b和table_c之间的连接,但它具有以下列:
id_table_a desc_table_a table_c.id_user table_c.field
-----------------------------------------------------------
4 desc4 4 field4
5 desc5 5 field8
9 desc9 6 field9
Run Code Online (Sandbox Code Playgroud)
两者之间的区别在于,在表1中我们有table_b.id_user和表2
table_c.id_user相反.
组合表
id_table_a desc_table_a id_user table_c.field
-----------------------------------------------------------
1 desc1 1 field1
2 desc2 2 field2
3 desc3 3 field3
4 desc4 4 field4
5 desc5 5 field5
9 desc9 6 field6
Run Code Online (Sandbox Code Playgroud)
我已经有了加入请求,但两者之间的联合给了我
ORA-01790 expression must have same datatype as corresponding expression
Run Code Online (Sandbox Code Playgroud)
这是有道理的,因为两列不一样.
我正在使用zend_Db的join和union.
那么我该如何解决这个问题呢?
谢谢.
Joh*_*Woo 11
结果是否与表格中的列序列相同?因为oracle在列顺序中是严格的.以下示例产生错误:
create table test1_1790 (
col_a varchar2(30),
col_b number,
col_c date);
create table test2_1790 (
col_a varchar2(30),
col_c date,
col_b number);
select * from test1_1790
union all
select * from test2_1790;
Run Code Online (Sandbox Code Playgroud)
ORA-01790:表达式必须与相应的表达式具有相同的数据类型
如您所见,错误的根本原因在于使用*作为列列表说明符所暗示的不匹配列排序.通过显式输入列列表可以轻松避免此类错误:
select col_a, col_b, col_c from test1_1790
union all
select col_a, col_b, col_c from test2_1790;
Run Code Online (Sandbox Code Playgroud)
此错误的更常见情况是,当您无意中交换(或转移)SELECT列表中的两个或更多列时:
select col_a, col_b, col_c from test1_1790
union all
select col_a, col_c, col_b from test2_1790;
Run Code Online (Sandbox Code Playgroud)
或者如果以上操作不解决您的问题,如何创建一个 ALIAS 在列
如下:(查询是不一样的你的,但这里的关键是如何在列中添加别名).
SELECT id_table_a,
desc_table_a,
table_b.id_user as iUserID,
table_c.field as iField
UNION
SELECT id_table_a,
desc_table_a,
table_c.id_user as iUserID,
table_c.field as iField
Run Code Online (Sandbox Code Playgroud)
希望这可以帮助.
| 归档时间: |
|
| 查看次数: |
10197 次 |
| 最近记录: |