HISTORY 表
ID NUMBER(10)
USERID NUMBER(10)
DECRIPTION VARCHAR2(200)
ROLE NUMBER(2) 可能值1,0ADMIN 表
ADMINID NUMBER(10)
ADMINNAME VARCHAR2(50)USER 表
USERID NUMBER(10)
USERNAME VARCHAR2(50)要求:查询HISTORY表,根据ROLE选择显示ADMINNAME或者USERNAME(
HISTORY.USERID和ADMIN.ADMINID,USER.USERID关联)谢谢
ID NUMBER(10)
USERID NUMBER(10)
DECRIPTION VARCHAR2(200)
ROLE NUMBER(2) 可能值1,0ADMIN 表
ADMINID NUMBER(10)
ADMINNAME VARCHAR2(50)USER 表
USERID NUMBER(10)
USERNAME VARCHAR2(50)要求:查询HISTORY表,根据ROLE选择显示ADMINNAME或者USERNAME(
HISTORY.USERID和ADMIN.ADMINID,USER.USERID关联)谢谢
解决方案 »
- shell脚本执行一半停止执行的问题请教
- 如何从10g r1升级到r2 ?
- sql语句怎么写??
- 帮忙看一下,这个句子为什么出不来结果?谢谢。语法好像没错,只是一执行就处于等待状态
- 表空间备份,对数据备份了么?
- 才用ORACLE请教一简单的赋权SQL
- win2000下orcale 9.2.0.1.0安装时出现“加载数据库时出错:areasQueries”,在线等待。
- 数据库链路的问题
- 用ADO访问ORACLE服务器时,是否一定要装ORACLE的客户端?
- Oracle怎么查询复选框
- 1000分征求oracle数据库对于海量数据的存储、查询解决方案
- [请教JDEVELOP关于ADF组件的问题!!]如何将ADF中的数据真正的提交到数据库
from history a,admin b,user c
where a.userid=b.adminid
and a.userid=c.userid;
decode(role,1,b.ADMINNAME,0,c.USERNAME) NAME,
DECRIPTION
from HISTORY a,ADMIN b,USER c
and (a.role='1' and b.ADMINID=a.userid)
or (a.role='0' and c.USERID=a.userid)
----or---->
select id,userid,
decode(role,1,b.ADMINNAME,0,c.USERNAME) NAME,
DECRIPTION
from HISTORY a,ADMIN b,USER c
and (a.role='1' and b.ADMINID(+)=a.userid)
or (a.role='0' and c.USERID(+)=a.userid)
假设 role 为 1 显示 user name SELECT A.ID,B.ADMINNAME
FROM HISTORY A, ADMIN B
WHERE A.ID = B.ADMINID AND A.ROLE = 0
UNION
SELECT C.ID,D.USERNAME
FROM HISTORY C, USER D, ADMIN E
WHERE C.ID = D.USERID AND C.ROLE = 1 AND (C.ID NOT IN E.ADMINID)没有执行过,没有建表(表达一下大意就可以了)有朋友和我说
(C.ID NOT IN E.ADMINID)可以被下句代替,效率会高
(C.ID = E.ADMINID(+) AND E.ADMINID IS NULL)如果不考虑在两个表中的ID可能有重复,上面的方法都很好
就是用decode我用union是有人说在索引的情况下,union比or效率高关于效率,我没有试验过,有空试验