Oracle查询问题

wiki14 2011-09-19 11:20:03

table1
id typeid1 typeid2 typeid3 typeid4
1 1 2 3 1,2,3


table2
id typename
1 项目1
2 项目2
3 项目3



结果:
id typeid1 typeid2 typeid3 typeid4
1 项目1 项目2 项目3 项目1,项目2,项目3
...全文
263 10 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
wiki14 2011-09-19
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 xiaobn_cn 的回复:]
楼主的typeid4与前面的1-3之间的关系如何?
[/Quote]

没什么关系,有可能是:"1,2";"1,3";"1,2,3";"2,3"
xiaobn_cn 2011-09-19
  • 打赏
  • 举报
回复
如果typeid4的内容是table2里的任意数量的id的连接,那么就没有什么效率的算法了,只能进行行列转换了。
xiaobn_cn 2011-09-19
  • 打赏
  • 举报
回复
楼主的typeid4与前面的1-3之间的关系如何?如果typeid4= typeid1 + typeid2 + typeid3,那么可以采用以下的SQL:

with a as
(
select 1 id, '1' typeid1, '2' typeid2, '3' typeid3, '1,2,3' typeid4 from dual
)
,
b as
(
select '1' id, '项目1' name from dual union
select '2' , '项目2' from dual union
select '3' , '项目3' from dual
)
select a.id, b1.name, b2.name, b3.name, b1.name||','||b2.name||','||b3.name from a,b b1,b b2,b b3 where a.typeid1 = b1.id and a.typeid2 = b2.id and a.typeid3 = b3.id;
wiki14 2011-09-19
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 xiongli0204 的回复:]

你可以搜下,好多人都提过这种问题,行列转换。
[/Quote]

谢谢,想要效率高点的。
黑色的熊猫 2011-09-19
  • 打赏
  • 举报
回复
你可以搜下,好多人都提过这种问题,行列转换。
wiki14 2011-09-19
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 xiaobn_cn 的回复:]

[/Quote]

额,多谢。下午已经实现了,向你所说,只能是没有什么效率的做法。只是等等看有没有什么好点子,呵呵。

逗号分割外链查询的人你桑不起啊。
xiaobn_cn 2011-09-19
  • 打赏
  • 举报
回复
汗,楼主还在等回复啊?你的要求很难满足,据我所知行列转换是没有什么效率的代码的。偶只能给你一个不效率的代码。

with a as
(
select 1 id, '1' typeid1, '2' typeid2, '3' typeid3, '1,2,3' typeid4 from dual
)
,
b as
(
select '1' id, '项目1' name from dual union
select '2' , '项目2' from dual union
select '3' , '项目3' from dual
)
select t.id,b1.name,b2.name,b3.name,wm_concat(b4.name)
from
(select a.id,a.typeid1,a.typeid2,a.typeid3,regexp_substr(a.typeid4,'[^,]+', 1, tr.lv) typesubid,tr.lv from a,(select level lv from dual connect by level < 10) TR) T,
b b1,b b2,b b3,b b4
where typesubid is not null and
t.typeid1 = b1.id and
t.typeid2 = b2.id and
t.typeid3 = b3.id and
t.typesubid = b4.id
group by t.id,b1.name,b2.name,b3.name ;
----大漠---- 2011-09-19
  • 打赏
  • 举报
回复
友情帮顶。
Alessandro_ 2011-09-19
  • 打赏
  • 举报
回复
帮顶、
wiki14 2011-09-19
  • 打赏
  • 举报
回复
自顶

17,382

社区成员

发帖
与我相关
我的任务
社区描述
Oracle 基础和管理
社区管理员
  • 基础和管理社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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