小弟需求如下:
表user1,user2,user3,userStatus
前三个分别是对应不同角色的用户表,剔除其他字段,现假设有字段id和name(3个表都有,并且id是3个表共用一个sequence的。)userStatus有字段user_id,不管其他字段,userStates是在u1,u2,u3表分别在插入记录(建立用户)的时候,增加一条记录,并记录相应的user表中的id为user_id。OK,需求来了:
我需要一个视图,里面要有4个字段,分别是user_id,u1_name,u2_name,u3_name。并且列出的总条数就是u1+u2+u3表记录的行数,或者userStatus表的行数。当user_id对应user1的id的时候,字段u1_name取user1表的name,其他字段就是null。以此类推。注:表结构设计的不好,麻烦大家不要在表结构上讨论了。
表user1,user2,user3,userStatus
前三个分别是对应不同角色的用户表,剔除其他字段,现假设有字段id和name(3个表都有,并且id是3个表共用一个sequence的。)userStatus有字段user_id,不管其他字段,userStates是在u1,u2,u3表分别在插入记录(建立用户)的时候,增加一条记录,并记录相应的user表中的id为user_id。OK,需求来了:
我需要一个视图,里面要有4个字段,分别是user_id,u1_name,u2_name,u3_name。并且列出的总条数就是u1+u2+u3表记录的行数,或者userStatus表的行数。当user_id对应user1的id的时候,字段u1_name取user1表的name,其他字段就是null。以此类推。注:表结构设计的不好,麻烦大家不要在表结构上讨论了。
解决方案 »
- Oracle proc 输出问题求助
- 授权问题
- 如何汉化oracle.10g?
- WiseInstall数据库打包的版本检测问题?
- 急求解决方案:使用toad连接远程oracle服务器时,出现ora-12154:tns:无法处理服务名错误
- 求助一条行转列的查询语句
- pl/sql更新无效
- 急,这样的SQL语句怎么写?我知道sqlserver但不知道oracle
- 急!listener.txt这个log文件可以直接删除吗??
- ORA-01219: database not open: queries allowed on fixed tables/views only
- 有个关于求和的问题
- 请教一个分组统计SQL
union all
select id,null,name,null from dual
union all
select id,null,null,name from dual;
我认为楼主好像是想要userstatus这个表里面其他的数据,只是为了说明问题举的例子。
select d.user_id,a.name u1_name,b.name u2_name,c.name u3_name
from user1 a,user2 b,user3 c,userStatus d
where d.user_id=a.id(+)
and d.user_id=b.id(+)
and d.user_id=c.id(+);
[TEST@ora10gr1#2009-11-26/21:45:30] SQL>with
2 user1 as( select 1 id,'user1a' name from dual
3 union all
4 select 2 id,'user1b' name from dual
5 ),
6 user2 as( select 3 id,'user2a' name from dual
7 union all
8 select 4 id,'user2b' name from dual
9 ),
10 user3 as( select 5 id,'user3a' name from dual
11 union all
12 select 6 id,'user3b' name from dual
13 ),
14 userStatus as( select 1 user_id from dual
15 union all
16 select 2 user_id from dual
17 union all
18 select 3 user_id from dual
19 union all
20 select 4 user_id from dual
21 union all
22 select 5 user_id from dual
23 union all
24 select 6 user_id from dual
25 )
26 select d.user_id,a.name u1_name,b.name u2_name,c.name u3_name
27 from user1 a,user2 b,user3 c,userStatus d
28 where d.user_id=a.id(+)
29 and d.user_id=b.id(+)
30 and d.user_id=c.id(+)
31 ; USER_ID U1_NAM U2_NAM U3_NAM
---------- ------ ------ ------
5 user3a
6 user3b
4 user2b
3 user2a
1 user1a
2 user1b6 rows selected.