Oracle SQL Рекурсивный запрос, когда FieldType является подстраницей - PullRequest
1 голос
/ 19 апреля 2020

У меня есть таблица PanelDefn, в которой есть список следующих полей

PanelID  FieldID  RecordName FieldName LableText Subpanel  FieldType
PRV1     1        REC1       FLD1      Name                 1
PRV1     2        REC1       FLD2      Address              1 
PRV1     3        REC1       FLD3      Email                1
PRV1     4                                       SUB_PRV1   11
PRV1     5                                       SUB_PRV2   11
SUB_PRV1 1        REC2      FLD1       Address1             1
SUB_PRV1 2        REC2      FLD2       Address2             1
SUB_PRV1 3        REC2      FLD3       City                 1
SUB_PRV1 4        REC2      FLD4       Postal               2
SUB_PRV2 1        REC3      FLD1       EmailTYpe            1
SUB_PRV2 2        REC3      FLD2       PrimaryFlag          1

Я хотел бы написать запрос, который рекурсивно выдает данные для SubPanel, когда я запрашиваю Panel. Это означает, что всякий раз, когда мы сталкиваемся с FieldType = 11, нам нужен рекурсивный запрос для этого. Я пытался использовать соединение.

1 Ответ

1 голос
/ 19 апреля 2020

Полагаю, вам нужен запрос ниже -

SELECT *
FROM DATA
START WITH PanelID = 'PRV1'
CONNECT BY PRIOR Subpanel = PanelID

Это рекурсивно сгенерирует записи путем сравнения PanelID и Subpanel, а затем с помощью предложения START WITH отфильтрует ненужные записи.

...