+ -
当前位置:首页 → 问答吧 → oracle查询语句 多张表 多对多 求大神~~~

oracle查询语句 多张表 多对多 求大神~~~

时间:2011-12-19

来源:互联网

三张表 结构如下, 
主表A  
id pjid tasktypeid stateid
101 5 1 11
102 6 2 22
表B  
pjid pjname
5 酒店台帐
6 超市台帐

表 C 
id keyvalue name note
tasktypeid 1 设计 任务类型
tasktypeid 2 编码 任务类型
stateid 11 未完成 任务状态
stateid 22 已完成 任务状态

需要的查询结果 :
id pjid pjname tasktypeid name stateid name
101 5 酒店台帐 1 设计 1 未完成
102 6 超市台帐 2 编码 2 已完成

作者: onlymorgan   发布时间: 2011-12-19

SQL code

select 
    t.id,t.pjid,t1.pjname,t.tasktypeid,t2.name tasktypename,t.stateid,t3.name statename
from A t 
left join B t1 on t.pjid =t1.pjid
left join C t2 on t2.id='tasktypeid' and t.tasktypeid=t2.keyvalue
left join C t3 on t3.id='stateid' and t.stateid=t3.keyvalue
order by t.id,t.pjid,t.tasktypeid,t.stateid

作者: zyuc_wangxw   发布时间: 2011-12-19

SQL code

select a.id, 
a.pjid,
(select pjname from 表B b where a.pjid=b.pjid) as pjname,
a.tasktypeid, 
(select name from 表C c where a.tasktypeid=c.keyvalue and c.id='tasktypeid') as tasktype_name,
a.stateid
(select name from 表C c where a.stateid=c.keyvalue and c.id='stateid') as state_name
from 主表A  a

作者: lxpbs8851   发布时间: 2011-12-19