日期:2014-05-17  浏览次数:20721 次

一个比较复杂的条件查询
现在我有两个表,
电子介质表   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是用来对编码进行分类的。