首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >仅选择层次结构较低的值

仅选择层次结构较低的值
EN

Stack Overflow用户
提问于 2018-08-02 07:34:13
回答 1查看 41关注 0票数 1

我有一个配置表CONFIG_STUFF:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
Table_name: varchar
Field_name: varchar
Parent_name: varchar

覆盖的系统有许多字段,这些字段本质上是分层的,完全可自定义。

示例:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
Table_Name  Field_Name  Parent_Name
Tab1        CostCenter  Division
Tab2        Division    null
Tab3        Division    null
Tab4        Team        CostCenter

我需要做的是确定给定字段在此层次结构中的级别,然后选择它的table_name和field_name以及它下面的所有内容,同时排除上面的那些

例如,对于'CostCenter',我将返回:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
Table_Name  Field_Name
Tab1        CostCenter
Tab4        Team

对于'Division',我会返回:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
Table_Name  Field_Name  
Tab1        CostCenter  
Tab2        Division    
Tab3        Division    
Tab4        Team    

到目前为止,我已经尝试使用connect by,但无法让它按我想要的方式工作。

有什么想法吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-08-02 08:14:58

你真的不需要知道你的起点的水平。您可以使用start with子句来计算它下面的所有内容:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
-- cte for your sample data
with config_stuff (table_name, field_name, parent_name) as (
  select 'Tab1', 'CostCenter', 'Division' from dual
  union all select 'Tab2', 'Division', null from dual
  union all select 'Tab3', 'Division', null from dual
  union all select 'Tab4', 'Team', 'CostCenter' from dual
)
-- actual query
select table_name, field_name
from config_stuff
start with field_name = 'CostCenter'
connect by parent_name = prior field_name;

TABLE_NAME FIELD_NAME
---------- ----------
Tab1       CostCenter
Tab4       Team      

但是您的层次结构并不是惟一的,因此对于除法也是如此,因为CostCenter有两个带有Division的父行。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
select table_name, field_name
from config_stuff
start with field_name = 'Division'
connect by parent_name = prior field_name;

TABLE_NAME FIELD_NAME
---------- ----------
Tab2       Division  
Tab1       CostCenter
Tab4       Team      
Tab3       Division  
Tab1       CostCenter
Tab4       Team      

当然,您可以添加一个distinct来消除重复项:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
select distinct table_name, field_name
from config_stuff
start with field_name = 'Division'
connect by parent_name = prior field_name;

TABLE_NAME FIELD_NAME
---------- ----------
Tab4       Team      
Tab2       Division  
Tab3       Division  
Tab1       CostCenter

但这可能表明存在数据问题,如果这是完全可定制的,那么您可能最终会出现循环(周期)。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51648000

复制
相关文章
Android笔记:TabLayout占不满屏幕所有宽度
刚好在用到原生TabLayout的时候碰到了这个小问题,网上很多文章都很多余,其实很简单,分享大家看一下
程思扬
2022/01/11
1K0
将网站程序放在tmpfs下
将网站程序放在tmpfs下 然后用nginx直接做对外服务呢 varnish或者squid都是利用内存和它的连接数来做到加速服务. 但是如果是squid->nginx->fastcgi->mysql 这样当中很多连接是开销在内部的连接之中 而且如果客户端请求php.squid还需要将请求再转发至nginx,然后nginx再转发至fastcgi 对于动态内容的多加了一个步骤. 考虑到nginx有了不低于squid以及varnish的连接能力 那么可以将网站程序直接放在tmpfs中 这样如果是静态的.就会直接从内存读取后返回给用户(和其他缓冲服务器的效果一样) 如果是PHP就丢给后面的fastcgi处理 这样更快.
Java架构师必看
2021/03/22
1.1K0
云数据隐私:将密钥放在哪里?
在任何工作负载迁移项目计划中,最容易被忽视的项目通常是跨多个云服务的密钥管理和合规性。增强自带密钥(BYOK)服务使企业可以将数据位置与加密密钥分开。加密最佳实践有助于提高数据隐私性。
静一
2021/06/01
2.8K0
前端性能优化—将CSS文件放在顶部
CSS文件放置在head中和放在body底部,对CSS本身的下载时间不会有影响,但对页面的呈现有非常大的影响,与用户体验密切相关。
红目香薰
2022/11/29
8920
TabLayout基本使用
Tablayout继承自HorizontalScrollView,可以用作顶部标签效果、底部导航栏效果。一般多与ViewPager一起使用。
用户3030674
2019/04/01
1.3K0
java将list中某个元素放在首位
java将list中某个元素放在首位 1 List<Example> example = exampleRepository.list(); 2 3 //将list里的某个字符串默认排列在list第一个位置 4 if(null != example&& example.size() > 0){ 5 for(int index = 0 , length = example.size() ; index < length ; index++){ 6 if("testData
朱季谦
2020/03/24
3.9K0
TabLayout 的几种用法
不过它与RadioGroup不同在于它有下划线可以滑动,更动感...,如果产品经理要求这样实现,就可以派上用场了。
Jingbin
2019/03/19
1.3K0
将Hutool的db.setting放在Nacos配置中心
hutool使用了DB.query作一个查询功能,但需要在resources下建立一个db.settting文件 但我使用了nacos,想需要把这个配置文件也同时放成Nacos上 示例代码如下:
星痕
2021/11/24
8990
将手机屏幕投屏到Kali
首先开启手机的开发者模式--USB试调 通过USB连接电脑后,终端执行命令scrcpy即可
逍遥子大表哥
2021/12/19
1.3K0
将手机屏幕投屏到Kali
JavaScript之将JS代码放在什么位置最合适
1.放到<head></head>标签里面 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <title></title> <script type="text/javascript">
郑小超.
2018/01/24
8700
将项目上传到 Maven 中央仓库(2023最新,巨详细)
官方文档:https://central.sonatype.org/publish/publish-maven/#a-complete-example-pom
co松柏
2023/05/12
9360
将项目上传到 Maven 中央仓库(2023最新,巨详细)
将jar包发布到maven的中央仓库细节整理
在学习springboot框架的时候,会引入各种各样的starter依赖,照着教程尝试写了个demo-spring-boot-stater,可以理解为一个组件,随引随用
陈灬大灬海
2019/10/16
1.9K0
FastAPI 学习之路(五十五)将token存放在redis
我们之前分享FastAPI 学习之路(五十四)操作Redis,这次我们把请求验证的token存放在redis中做校验。
雷子
2021/10/12
1.5K0
TabLayout 实现底部Tab
前言 底部Tab已经是一个应用的标配了,因为手机屏幕大小的限制,使得我们必须去最大化的利用可见的空间。当然底部Tab一般为3个左右,最多不会超过5个。 效果图 下面是我使用TabLayout来实现的底
code_horse
2018/07/02
1.4K0
【Android开发基础系列】Layout布局专题
        在 Android 中视图组是集合若干个控件在一起的元素,ViewGroup 有两种用法,一种是像普通的控件一样使用(如网页视图、旋转按钮、文本切换器、图像切换器、单选按钮组等),另一种是作为布局容器使用(各种布局)。
江中散人_Jun
2023/10/16
3880
【Android开发基础系列】Layout布局专题
spring security将sessionId放在header里,解决共享会话的问题
现在分布式系统,都是采用redis做共享会话。 现在系统使用的是spring security,用户登陆后,如何通过sessionId保证已经登陆呢 解决办法如下:
星痕
2018/09/12
4.6K1
Dev 日志 | 如何将 jar 包发布到 Maven 中央仓库
Maven 中央仓库并不支持直接上传 jar 包,因此需要将 jar 包发布到一些指定的第三方 Maven 仓库,比如:Sonatype OSSRH 仓库,然后该仓库再将 jar 包同步到 Maven ,本文详细记录整个发布、同步过程。
NebulaGraph
2019/12/12
1.1K0
Dev 日志 | 如何将 jar 包发布到 Maven 中央仓库
TabLayout的高级使用
真实的业务场景中,很多的效果,原生的TabLayout,并不支持。例如下滑线短于文字的效果,底部导航栏效果,标签文字选中是需要加粗效果等等。
用户3030674
2019/04/01
1.3K0
TabLayout的高级使用
android之TabLayout介绍
TabLayout是Android support中的一个控件android.support.design.widget.TabLayout,Google在升级了AndroidX之后,将TabLayout迁移到material包下面去了com.google.android.material.tabs.TabLayout,原来的support下面的TabLayout从API 29开始就不再维护了。
李小白是一只喵
2020/12/08
1.1K0
点击加载更多

相似问题

将键:值转换为CSV文件

11

将csv数据转换为数组格式

44

将JSON数据转换为CSV格式

10

以组合键格式将dict转换为CSV。

11

将npz转换为csv格式时出现键错误

21
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文