首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > oracle >

一个比较复杂的条件查询,该怎么解决

2012-01-21 
一个比较复杂的条件查询现在我有两个表,电子介质表ElectronicInfo,主要记录光盘和磁带两种介质的信息,字段

一个比较复杂的条件查询
现在我有两个表,
电子介质表   ElectronicInfo,主要记录光盘和磁带两种介质的信息,字段如下:
id          
el_name     --名字
el_inlibdate       --入库日期
el_typeid             --类型id,1表示光盘,2表示磁带

另外有一个系统设置表sysset,字段如下:
sysset_id
CDStorageLife               --光盘的存贮期限
TapeStorageLife           --磁带的存贮期限

      我想查询结果集是这样的:
el_name           el_inlibdate       存贮期限(就是如果它是光盘就显示光盘的存贮期限,是磁带就显示磁带的存贮期限)

        那么该怎么写这个查询语句呢?


[解决办法]
Select a.el_name,(case when a.el_typeid=1 then b.CDStorageLife
else b.TapeStorageLife end) as el_inlibdate
from ElectronicInfo a,sysset b
where a.id=b.sysset_id
[解决办法]
1、Select A.el_name,A.el_inlibdate,Decode(A.el_typeid,1,B.CDStorageLife,2,B.TapeStorageLife) from ElectronicInfo A,sysset B
在这种情况下我认为sysset中只有一条记录
2、Select A.el_name,A.el_inlibdate,Decode(A.el_typeid,1,B.CDStorageLife,2,B.TapeStorageLife) from ElectronicInfo A,sysset B where B.sysset_id= '关于某类介质的一个类型编码 '
在这种情况下我认为sysset中sysset_id是用来对编码进行分类的。

热点排行