首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从两个没有公共字段的表中提取数据

从两个没有公共字段的表中提取数据
EN

Stack Overflow用户
提问于 2021-08-19 12:39:11
回答 2查看 50关注 0票数 0

通过登录到Oracle架构产品,我运行了以下两个查询以获得所需的详细信息:

查询-1:在产品模式中查找开始日期在01-11月-2020年之前的所有会话号。

代码语言:javascript
复制
select SESSION_NO, SESSION_BEG
  from APP_SESSION
  where SESSION_BEG < to_date('2020-11-01 00:00:00', 'YYYY-MM-DD HH24:MI:SS')
  order by SESSION_BEG; 

查询-2:在产品模式中查找所有表及其大小,其中表名由会话号357924160组成,这是我从查询-1输出中得到的许多会话号中的一个。

代码语言:javascript
复制
select SEGMENT_NAME,
       BYTES/1024/1024 as "SIZE in MB"
  from USER_SEGMENTS
  where SEGMENT_TYPE='TABLE' and
        SEGMENT_NAME like '%357924160%'
  order by "SIZE in MB" desc;

由于在两个表USER_SEGMENTS和APP_SESSION之间没有公共列,而且从Query-1输出到检查中有许多会话编号(千),所以我必须对每个会话号一次又一次地运行查询-2。

我想知道在Oracle中是否有任何方法将query-1和query-2连接在一起,以找到所有大小为表名的表,其中任何会话号的开始日期在01-11月-2020年之前?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2021-08-19 12:53:54

你可以这样做:

代码语言:javascript
复制
select ap.SESSION_NO,
       ap.SESSION_BEG,
       us.SEGMENT_NAME,
       us.BYTES/1024/1024 AS "SIZE in MB"
  from APP_SESSION ap
  INNER JOIN USER_SEGMENTS us
    ON us.SEGMENT_TYPE = 'TABLE' AND
       us.SEGMENT_NAME LIKE '%' || ap.SESSION_NO || '%'
  where ap.SESSION_BEG < to_date('2020-11-01 00:00:00', 'YYYY-MM-DD HH24:MI:SS')
  order by ap.SESSION_BEG,
           "SIZE in MB"
票数 0
EN

Stack Overflow用户

发布于 2021-08-19 13:01:05

你可以试试这个:

代码语言:javascript
复制
select SEGMENT_NAME,
       BYTES/1024/1024 as "SIZE in MB" 
from USER_SEGMENTS, APP_SESSION
where SEGMENT_TYPE='TABLE' and
      SESSION_BEG < to_date('2020-11-01 00:00:00', 'YYYY-MM-DD HH24:MI:SS') and 
      SEGMENT_NAME like '%' || SESSION_NO || '%'
order by "SIZE in MB" desc;
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68848054

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档