标签: recursive-query

解析自引用表时CTE中的无限循环

我正在使用以下公用表表达式来解析自引用表.但CTE不起作用,产生无限循环并产生错误:

Msg 530,Level 16,State 1,Line 1声明终止.在语句完成之前,最大递归100已用尽.

如何修改此CTE以使其工作?

SET NOCOUNT ON;
USE tempdb;

IF OBJECT_ID('dbo.Employees', 'U') IS NOT NULL DROP TABLE dbo.Employees;

CREATE TABLE dbo.Employees
(
  empid   INT         NOT NULL PRIMARY KEY,
  mgrid   INT         NULL     REFERENCES dbo.Employees,
  empname VARCHAR(25) NOT NULL,
  salary  MONEY       NOT NULL,
  CHECK (empid > 0)
);

INSERT INTO dbo.Employees(empid, mgrid, empname, salary) VALUES
  (1,  1, 'David'  , $10000.00),
  (2,  1,    'Eitan'  ,  $7000.00),
  (3,  1,    'Ina'    ,  $7500.00),
  (4,  2,    'Seraph' ,  $5000.00),
  (5,  2,    'Jiru'   , …
Run Code Online (Sandbox Code Playgroud)

sql t-sql sql-server recursive-query sql-server-2008

12
推荐指数
1
解决办法
5411
查看次数

SQL多条件CTE递归

我在数据库中有每个标识符的以下2条信息.控制它们的公司,以及控制它们的公司.

沿线的东西,2个表(忽略一些唯一标识符):

组织

orgid | org_immediate_parent_orgid
1     | 2
2     | 2
3     | 1
5     | 4
Run Code Online (Sandbox Code Playgroud)

关系orgid - > org_immediate_parent_orgid意味着公司有父母.在我看来它只有相关的org_immediate_parent_orgid - > orgid公司的母公司作为子公司

org_affiliations

orgid | affiliated_orgid
2     | 3
2     | 5
4     | 1
1     | 5
Run Code Online (Sandbox Code Playgroud)

orgid - > affiliated_orgid是公司的附属机构

视觉表示应该是这样的:

数据库表示

关于组织的红色关系,蓝色关系org_affiliations.

如果想让2所有的所有公司(或2的子公司)拥有它们的一部分:

select m.org_immediate_parent_orgid
,m.orgid
from oa.organizations m
where m.org_immediate_parent_orgid is not null
start with m.orgid in (Identifiers)
connect by nocycle prior  m.orgid=m.org_immediate_parent_orgid
Run Code Online (Sandbox Code Playgroud)

回报

org_immediate_parent_orgid| orgid
1                         | 2
2 …
Run Code Online (Sandbox Code Playgroud)

sql recursion plsql recursive-query common-table-expression

11
推荐指数
1
解决办法
1187
查看次数

递归查询质询 - 简单的父/子示例

注意:在RhodiumToad的#postgresql帮助下,我已经找到了一个解决方案,我将其作为答案发布.如果有人可以改进这一点,请加入!

我无法使先前的递归查询解决方案适应包含多个"根"(无祖先)节点的以下有向非循环图.我正在尝试编写一个查询,其输出通常称为闭包表:一个多对多表,它存储从每个节点到每个后代及其自身的每条路径:

1  2  11  8  4  5  7
 \/    |  |   \ | /
  3    |   \    6
   \   |    \  /
    9  |     10
     \/     /
     12    13
       \  /
        14

CREATE TABLE node (
  id        SERIAL PRIMARY KEY,
  node_name VARCHAR(50) NOT NULL
);

CREATE TABLE node_relations (
  id                 SERIAL PRIMARY KEY,
  ancestor_node_id   INT REFERENCES node(id),
  descendant_node_id INT REFERENCES node(id)
);

INSERT into node (node_name)
SELECT 'node ' || g FROM generate_series(1,14) g;

INSERT INTO node_relations(ancestor_node_id, …
Run Code Online (Sandbox Code Playgroud)

sql postgresql recursive-query transitive-closure-table

11
推荐指数
1
解决办法
7425
查看次数

在SQL中递归选择

我有一个问题,我无法理解.我知道我想要什么,只是简直无法在屏幕上看到它.我有一个看起来像这样的表:

Id, PK UniqueIdentifier, NotNull
Name, nvarchar(255), NotNull
ParentId, UniqueIdentifier, Null
Run Code Online (Sandbox Code Playgroud)

ParentId有一个FK到Id.

我想要完成的是获得我传入的Id下方所有id的平面列表.

例:

1   TestName1    NULL
2   TestName2    1
3   TestName3    2
4   TestName4    NULL
5   TestName5    1
Run Code Online (Sandbox Code Playgroud)

树看起来像这样:

-1
  -> -2
       -> -3
  -> -5
-4
Run Code Online (Sandbox Code Playgroud)

如果我现在要求4,我只会回来4,但如果我要求1,我会得到1,2,3和5.如果我要求2,我会得到2和3,依此类推.

有谁能指出我正确的方向.我的大脑很油炸,所以我很感激能得到的所有帮助.

sql recursive-query sql-server-2008

10
推荐指数
2
解决办法
1万
查看次数

CTE如何真正起作用?

我遇到了这个用于连接行元素的CTE解决方案,我认为它很棒,我意识到CTE有多强大.

但是,为了有效地使用这样的工具,我需要知道它如何在内部工作以构建心理图像,这对于像我这样的初学者来说在不同场景中使用它是必不可少的.

所以我试着慢动作上面代码片段的过程,这里是代码

USE [NORTHWIND]
GO
/****** Object:  Table [dbo].[Products2]  Script Date: 10/18/2011 08:55:07 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
IF OBJECT_ID('Products2','U') IS NOT NULL  DROP TABLE [Products2]
CREATE TABLE [dbo].[Products2](
  [ProductID] [int] IDENTITY(1,1) NOT NULL,
  [ProductName] [nvarchar](40) NOT NULL,
  [SupplierID] [int] NULL,
  [CategoryID] [int] NULL,
  [QuantityPerUnit] [nvarchar](20) NULL,
  [UnitPrice] [money] NULL,
  [UnitsInStock] [smallint] NULL,
  [UnitsOnOrder] [smallint] NULL,
  [ReorderLevel] [smallint] NULL,
  [Discontinued] [bit] NOT NULL
) ON [PRIMARY]
GO
SET IDENTITY_INSERT [dbo].[Products2] ON
INSERT [dbo].[Products2] …
Run Code Online (Sandbox Code Playgroud)

sql-server recursive-query common-table-expression

10
推荐指数
2
解决办法
4292
查看次数

递归SQL语句(PostgreSQL 9.1.4)

PostgreSQL 9.1

经营情况

每个月都有一批特定流程的新帐户.每个批次都可以按月份,帐户数量和帐户总余额来描述.该过程的目标是从客户那里恢复一些平衡.然后每月单独跟踪每批次(自批次转移到流程以来每月回收的金额).

目标

我的目标是预测将来会收回多少金额.

数据定义

create table vintage_data (
    granularity date,       /* Month when account entered process*/
    distance_in_months integer, /* Distance in months from date when accounts entered process*/
    entry_accounts integer,     /* Number of accounts that entered process in a given month*/
    entry_amount numeric,       /* Total amount for account that entered process in a given month*/
    recovery_amount numeric     /* Amount recovered in Nth month on accounts that entered process in a given month */
);
Run Code Online (Sandbox Code Playgroud)

样本数据

insert into …
Run Code Online (Sandbox Code Playgroud)

sql postgresql recursive-query

10
推荐指数
1
解决办法
834
查看次数

使用php mysql创建嵌套的json对象

我有两个表,表1有2个字段(question_pk,question_name),表2有4个字段(ans_pk,options,question_fk和right_answer).我想像以下结构一样创建json

{
    "type": "quiz",
    "name": "Brand Colors",
    "description": "Can you identify these brands by the background color?",
    "questions": [
        {
            "name": "Can you identify this color?",
            "description": "#ea4c89",
            "answers": [
                {
                    "name": "Dribbble",
                    "description": "dribbble.png",
                    "weight": 1
                },
                {
                    "name": "Amazon",
                    "description": "amazon.png",
                    "weight": 0
                },
                {
                    "name": "Apple",
                    "description": "apple.png",
                    "weight": 0
                }
            ]
        },
        {
            "name": "Can you identify this color?",
            "description": "#3d9ae8",
            "answers": [
                {
                    "name": "Youtube",
                    "description": "youtube.png",
                    "weight": 0
                },
                {
                    "name": "Dropbox",
                    "description": …
Run Code Online (Sandbox Code Playgroud)

php mysql json recursive-query

9
推荐指数
2
解决办法
9398
查看次数

Symfony2递归查询构建器

我有一个数据表,其中包含媒体,文档,PDF和文件夹列表.与Google云端硬盘相同,我想在数据表的顶部显示痕迹.数据表反映了通过jQuery点击任何文件夹时的更改.除了面包屑外,所有的东西都准备好了.我有当前打开的文件夹的ID,但我不知道如何从根到当前文件夹获取层次结构.

目前它给我父ID和名称而不是整个层次结构.

注意: - 列之间没有关系,因为它在同一个表中.
实体字段: -id, nameDisplay, parentId

实体定义: -

/**
 * driveall
 * @ORM\Table(name="Driveall")
 * @ORM\Entity(repositoryClass="DriveBundle\Repository\DriveallRepository")
 */
class Driveall
{
    /**
     * @var int
     * @ORM\Column(name="id", type="integer")
     * @ORM\Id
     * @ORM\GeneratedValue(strategy="AUTO")
     */
    private $id;

    /**
     * @var string
     * @ORM\Column(name="Name_Display", type="string", length=255)
     */
    private $nameDisplay;

    /**
     * @var int
     * @ORM\Column(name="ParentID", type="integer")
     */
    private $parentID;

    /**
     * Get id
     * @return int
     */
    public function getId()
    {
        return $this->id;
    }

    /**
     * Set nameDisplay
     * …
Run Code Online (Sandbox Code Playgroud)

php doctrine hierarchy recursive-query symfony

9
推荐指数
1
解决办法
651
查看次数

Oracle 中的简单递归查询

我目前在理解和编写递归查询方面遇到了一些麻烦。我知道递归查询用于搜索信息的层次结构,但我还没有在网上找到一个可以向上移动层次结构的简单解决方案。例如,假设我有一个对家谱建模的关系:

create table family_tree (
child varchar(10)
parent varchar(10)
);
Run Code Online (Sandbox Code Playgroud)

如果我想编写一个递归查询,遍历这个家谱,收集所有父母直到起源,我应该怎么做?

提前致谢。

sql oracle recursive-query

9
推荐指数
2
解决办法
2万
查看次数

SQL (Maria DB) 将由逗号分隔的字符串拆分为行

我有这个专栏:

names
John, Mary
Joseph
Eleanor, Sophia, Dani
Run Code Online (Sandbox Code Playgroud)

我想要这个输出:

names
John
Mary
Joseph
Eleanor
Sophia
Dani
Run Code Online (Sandbox Code Playgroud)

它应该包括 SUBSTRING_INDEX 函数

sql csv string recursive-query mariadb

9
推荐指数
2
解决办法
7088
查看次数