Oracle查询多表问题

ziyan688999 2010-07-06 07:39:29
查询
A表得到
ID, GID,
A 1
B 1
C 1
然后要为
A、B、C 查询对应的名字
Aname、Bname、Cname

再根本 GID 查询出Text、Ps 其它几列数据,


最终得到
ID GID Name Test Ps
A 1 Aname X Y1
B 1 Bname X Y2
C 1 Cname X Y3
...全文
145 17 打赏 收藏 转发到动态 举报
写回复
用AI写文章
17 条回复
切换为时间正序
请发表友善的回复…
发表回复
kidslovely 2010-07-08
  • 打赏
  • 举报
回复

SELECT T.問卷編號,T.模板號,T.總分,C.所屬大類,C.所屬小類,C.新分,bm.小類名稱,bm.原分,st.得分,ev.大類名稱
FROM TOTAL T,CONTENTPOINT C ,bm_evaluationcontent bm ,situation st,bm_evaluation ev
WHERE T.模板號=C.模板號 and t.問卷編號='108'
and bm.小類號 in(select distinct 小類號 from bm_evaluationcontent)
and bm.大類號 = st.小類號 and c.所屬大類=ev.大類號


---結果

問卷編號 模板號 總分 所屬大類 所屬小類 新分 小類名稱 原分 得分 大類名稱
108 20 303 X A 100 Aname 110 10 X1
108 20 303 X B 101 Aname 110 10 X1
108 20 303 Y C 102 Aname 110 10 Y2
108 20 303 X A 100 Bname 220 10 X1
108 20 303 X B 101 Bname 220 10 X1
108 20 303 Y C 102 Bname 220 10 Y2
108 20 303 X A 100 Aname 110 20 X1
108 20 303 X B 101 Aname 110 20 X1
108 20 303 Y C 102 Aname 110 20 Y2
108 20 303 X A 100 Bname 220 20 X1
108 20 303 X B 101 Bname 220 20 X1
108 20 303 Y C 102 Bname 220 20 Y2
108 20 303 X A 100 Cname 330 30 X1
108 20 303 X B 101 Cname 330 30 X1
108 20 303 Y C 102 Cname 330 30 Y2
108 20 303 X A 100 Aname 110 1 X1
108 20 303 X B 101 Aname 110 1 X1
108 20 303 Y C 102 Aname 110 1 Y2
108 20 303 X A 100 Bname 220 1 X1
108 20 303 X B 101 Bname 220 1 X1
108 20 303 Y C 102 Bname 220 1 Y2
108 20 303 X A 100 Aname 110 2 X1
108 20 303 X B 101 Aname 110 2 X1
108 20 303 Y C 102 Aname 110 2 Y2
108 20 303 X A 100 Bname 220 2 X1
108 20 303 X B 101 Bname 220 2 X1
108 20 303 Y C 102 Bname 220 2 Y2
108 20 303 X A 100 Cname 330 2 X1
108 20 303 X B 101 Cname 330 2 X1
108 20 303 Y C 102 Cname 330 2 Y2
hejuan250229087 2010-07-07
  • 打赏
  • 举报
回复
select a.ID,a.GID,b.Name,c.Test,c.Ps
from A a
left join B b on a.ID=b.ID
left join C c on a.GID=c.GID
心中的彩虹 2010-07-07
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 ziyan688999 的回复:]
A表
ID---GID
A 1
B 1
C 1
B表
ID----Name
A Aname
B Bname
C Cname
C表
GID---Test---PS
1 X Y1
1 X Y2
1 X Y3
[/Quote]



select A.id,A.gid,B.name,C.test,C.ps
from A,B,C
where A.id=B.id and A.gid=c.gid


-- 就这样
hotyxm 2010-07-07
  • 打赏
  • 举报
回复
SELECT a.id,a.gid,b.name,c.test,c.ps
FROM a a,b b,c c
WHERE a.id = b.id
AND a.gid = c.gid;
vber1010 2010-07-07
  • 打赏
  • 举报
回复
select a.ID,A.GID,B.NAME,C.TEST.C.PS from A,B,C where A.ID=B.ID AND A.GID=C.GID
lzbbob1985 2010-07-07
  • 打赏
  • 举报
回复
select A.ID,A.GID,B.Name,C.Text,C.Ps from A,B,C
where a.id = b.id(+) and a.gid = c.gid(+)
ziyan688999 2010-07-07
  • 打赏
  • 举报
回复
A表
ID---GID
A 1
B 2
C 3
B表
ID----Name
A Aname
B Bname
C Cname
C表
GID---Test---PS
1 X Y1
2 X Y2
3 X Y3
dzntree 2010-07-07
  • 打赏
  • 举报
回复

select a.id,a.gid, b.name,c.test,c.ps
from a,b,c
where a.id = b.id and a.gid = c.gid;
ziyan688999 2010-07-07
  • 打赏
  • 举报
回复
就是根据A表去B 、C表 查询数据返回一个数据集,绑定哟
ziyan688999 2010-07-07
  • 打赏
  • 举报
回复
A表
ID---GID
A 1
B 1
C 1
B表
ID----Name
A Aname
B Bname
C Cname
C表
GID---Test---PS
1 X Y1
1 X Y2
1 X Y3
ziyan688999 2010-07-07
  • 打赏
  • 举报
回复
怎么根据查询出来的结果再次查询数据。
malun666 2010-07-07
  • 打赏
  • 举报
回复
select A.ID,A.GID,B.Name,C.Text,C.Ps from A,B,C
where A.ID=B.ID and A.GID=C.GID

ABC为三个表名
ziyan688999 2010-07-07
  • 打赏
  • 举报
回复
3------------------------------------------------------------------------------
问卷编号 模板号 总分 所属大类号 所属小类号 新分 小类名称 原分 得分
108-----20-----303------X-------A--------100---Aname---110--10
108-----20-----303------X-------B--------101---Aname---110--20
108-----20-----303------Y-------C--------102---Aname---110--30
------------------------------------------------------------------------------
ziyan688999 2010-07-07
  • 打赏
  • 举报
回复
【根据 问卷编号 108 查询=问卷表= 得到 模板号20 】

问卷表Total
问卷编号 模板号 总分
108 20 303

【根据 模板号20 查询=问卷模板内容表= 得到 所属信息如1 】
问卷模板内容表contentpoint
模板号 所属大类 所属小类 新分
20 X A 100
20 X B 101
20 Y C 102

21 X A 1
21 X B 2
21 Y C 3

1------------------------------------------------------
问卷编号 模板号 总分 所属大类 所属小类 新分
108 20 303 X A 100
108 20 303 X B 101
108 20 303 Y C 102
-----------------------------------------------------

【根据 所属小类A、B、C 查询=小类表= 得到 所属信息如2 】
小类表bm_evaluationcontent
大类号 小类号 小类名称 原分
X A Aname 110
X B Bname 220
Y C Cname 330
2--------------------------------------------------------------------------
问卷编号 模板号 总分 所属大类号 所属小类号 新分 小类名称 原分
108 20 303 X A 100 Aname 110
108 20 303 X B 101 Aname 110
108 20 303 Y C 102 Aname 110
--------------------------------------------------------------------------

【根据 所属小类A、B、C和问卷号 查询=问卷得分表= 得到 所属信息如3 】
问卷得分表situation
问卷号 小类号 得分
108 x 10
108 x 20
108 y 30
123 x 1
123 x 2
123 y 2
3------------------------------------------------------------------------------
问卷编号 模板号 总分 所属大类号 所属小类号 新分 小类名称 原分 得分
108 20 303 X A 100 Aname 110 10
108 20 303 X B 101 Aname 110 20
108 20 303 Y C 102 Aname 110 30
------------------------------------------------------------------------------

【根据 所属大类号X、Y 查询=大类表= 得到 所属信息如4 】
大类表bm_evaluation
大类号 大类名称
X X1
Y Y2
4------------------------------------------------------------------------------------问卷编号 模板号 总分 所属大类号 所属小类号 新分 小类名称 原分 得分 大类名称
108 20 303 X A 100 Aname 110 10 x1
108 20 303 X B 101 Aname 110 20 x1
108 20 303 Y C 102 Aname 110 30 y2
-------------------------------------------------------------------------------------
ziyan688999 2010-07-06
  • 打赏
  • 举报
回复
呀哟,楼上的两位GG哟。
这不要关联表还整这来做什么哟。
每一个查询都是其它的表
lzbbob1985 2010-07-06
  • 打赏
  • 举报
回复
逻辑和叙述很混乱 不过貌似 要多表连接
心中的彩虹 2010-07-06
  • 打赏
  • 举报
回复
[Quote=引用楼主 ziyan688999 的回复:]
查询
A表得到
ID, GID,
A 1
B 1
C 1
然后要为
A、B、C 查询对应的名字
Aname、Bname、Cname

再根本 GID 查询出Text、Ps 其它几列数据,


最终得到
ID GID Name Test Ps
A 1 Aname X Y1
B 1 Bname X Y2
C 1 Cname X Y3
[/Quote]

楼主你关联的表了?

17,086

社区成员

发帖
与我相关
我的任务
社区描述
Oracle开发相关技术讨论
社区管理员
  • 开发
  • Lucifer三思而后行
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧