首先,我的数据库结构如下所示
Table Application:ID(pk), App_num, App_name, App_owner, App_sec
Table App_runner: ID(pk), app_id(FK:APP.id), runner_name
Table Jar_used: ID(pk), runId(FK: App_runner.id),jar_name, time_stamp
Table Jar_static: ID(pk), jar_name, current_version, version_status(either of C,S,D)
我需要的结果集如下:
App_Num, App_Name, App_Owner, Compliance
其中Compliance
是基于表的派生列version_status
,Jar_static
“C”=当前,“S”=支持,“D”=不推荐使用。
结果集条件还有:
app.id=app_runner.app_id
并且
app_runner.id=jar_used.runId
和
jar_used.jar_name=jar_static.jar_name
以下查询对我来说很好:
select app.APP_NUM, app.APP_NAME ,app.APP_OWNER , case jars.version_status
when 'C' then 'CURRENT'
when 'S' then 'SUPPORTED'
else 'DEPRECATED'
end as COMPLIANCE
from Application as app, app_runner as runner, jar_used as used, jar_static as jars
where app.id = runner.app_id and
runner.run_id = used.app_run_id and
jars.jar_name =used.jar_name
有人可以建议一种简化的方法来做同样的事情吗?
还有一个可能的要求是找到jar_used.jar_name='abc'
与其他三个条件一起出现的记录。再添加一个可以给出结果,但我正在寻找一些简化的方法。谢谢你的帮助。