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 已完成
主表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
相关阅读 更多
热门阅读
-
office 2019专业增强版最新2021版激活秘钥/序列号/激活码推荐 附激活工具
阅读:74
-
如何安装mysql8.0
阅读:31
-
Word快速设置标题样式步骤详解
阅读:28
-
20+道必知必会的Vue面试题(附答案解析)
阅读:37
-
HTML如何制作表单
阅读:22
-
百词斩可以改天数吗?当然可以,4个步骤轻松修改天数!
阅读:31
-
ET文件格式和XLS格式文件之间如何转化?
阅读:24
-
react和vue的区别及优缺点是什么
阅读:121
-
支付宝人脸识别如何关闭?
阅读:21
-
腾讯微云怎么修改照片或视频备份路径?
阅读:28