今天碰到一个问题,A表与B表一对多,B表与C表一对多的关系,A表的主键是B表的外键,B表的主键是C表的外键。
现在要查,A表所对应的C表的记录
两种方案:
一、以C表的需要字段作为主要的方面去查A表所对应的记录
select
td.devid,
td.devname,
cai.title
from
CORE_ATTACHMENT_INFO cai,
taizhang_devices td,
taizhang_places tp,
taizhang_devicedocument tdd
where
td.devid = tdd.devid
and tp.placeid = td.placeid
and cai.billid = tdd.docid
但是这样出现了一个问题,A表记录的那个查出字段会重复
二、以A表为主
select
dev.devid,dev.devname,dev.devtypeid,dev.placeid,dev.pwlevel,
WMSYS.WM_CONCAT(att.title) title,
WMSYS.WM_CONCAT(att.attid) attid,
WMSYS.WM_CONCAT(att.filename) filename
from taizhang_devices dev
left join
taizhang_devicedocument doc
on dev.devid=doc.devid
left join CORE_ATTACHMENT_INFO att
on doc.docid=att.billid
group by dev.devid ,dev.devname,dev.devtypeid,dev.placeid,dev.pwlevel
oracle中可以合同行为列的函数。
但是其只有oracle 10g才支持
分享到:
相关推荐
本文实例讲述了oracle实现多行合并的方法。分享给大家供大家参考。具体分析如下: 在写sql时,经常会有将某列的字段合并起来,比如将某人名下每个月的工资列示,但是每个人只能占一行。 像这种场景,可能用行列转换...
Oracle多行记录合并/连接/聚合字符串的几种方法
oracle10g,9i多行合并一行函数
SQL语句用with将列分割成多列存为临时表,再将多行某个字段拼接合并为一行
oracle纯SQL语句多行合并一行,中间用“,”隔开,方便快速的显示在页面上
1.被集合字段范围小且固定型 灵活性 性能 难度 2.固定表固定字段函数法 灵活性 性能 难度 3.灵活表函数法 灵活性 性能 难度 4.一条SQL法 灵活性
多行记录合并 采用的是方法4,希望对你们有用
怎么合并多行记录的字符串,一直是oracle新手喜欢问的SQL问题之一,关于这个问题的帖子我看过不下30个了,现在就对这个问题,进行一个总结。
不做详解,直接上图。 SELECT T.NAME, T.TESTSTR FROM TEST2 T; SELECT DISTINCT T.NAME, REPLACE(REGEXP_SUBSTR(T.TESTSTR, '[^,]+', 1, LEVEL), ',', ' ') TESTSTR FROM TEST2 T WHERE 1 = 1 ...
NULL 博文链接:https://czjxdm.iteye.com/blog/466948
主要介绍了oracle列合并的实现方法,需要的朋友可以参考下
您可能感兴趣的文章:常用的Oracle doc命令(收藏)Oracle 多行记录合并/连接/聚合字符串的几种方法Oracle中字符串连接的实现方法php连接oracle数据库及查询数据的方法plsql连接oracle数据库报ora 12154错
oracle 9i 实现wm_concat函数 进行一列多行合并,之间使用,分割
查看用户下所有主键外键引用, Windows环境中Kill掉Oracle线程(orakill),查看有哪些表被锁住,Oracle 官方文档下载,对表收集统计信息,刷新物化视图,Oracle 查看用户权限,Oracle 外连接和 (+)号的用法,多行合并一行
该脚本包含递归查询、删除数据表中重复数据、分组取最大记录,行列互转、多行合并等不常见但是非常实用的oracle函数并附带详细的实例持续更新中
她是Oracle ACE,也是OakTable(Oracle社区中著名的“Oracle科学家”的非正式组织)的成员,经常在技术会议上演讲。她的著作还包括 Expert Oracle Practices和Beginning Oracle SQL,博客主页是karenmorton....