Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Рекурсивный CTE
|
|||
|---|---|---|---|
|
#18+
Добрый вечер Помогите пожалуйста с рекурсивным CTE. Есть таблица с классификаторами,в ней два поля которые интересны - id_classif - номер классификатора и parent_id - его родительский классификатор. Вложимость может быть любой. Мне нужно вытащить все id_classif всех классификаторов ниже определенного классификатора. Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. Запрос явно не отрабатывает все вложимости. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.04.2015, 12:54 |
|
||
|
Рекурсивный CTE
|
|||
|---|---|---|---|
|
#18+
Gallemar, ужас. Можешь DDL таблиц привести. Ты точно уверен что нужен именно UNION, а не UNION ALL. Наличие предиката IN несколько напрягает ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.04.2015, 13:06 |
|
||
|
Рекурсивный CTE
|
|||
|---|---|---|---|
|
#18+
что типа такого Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.04.2015, 13:21 |
|
||
|
Рекурсивный CTE
|
|||
|---|---|---|---|
|
#18+
Gallemar, нет слова "вложимость". есть вложенность. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.04.2015, 14:35 |
|
||
|
Рекурсивный CTE
|
|||
|---|---|---|---|
|
#18+
kdvGallemar, нет слова "вложимость". есть вложенность. Учту в дальнейшем. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.04.2015, 15:20 |
|
||
|
Рекурсивный CTE
|
|||
|---|---|---|---|
|
#18+
Gallemar, с запросом то разобрался? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.04.2015, 15:21 |
|
||
|
Рекурсивный CTE
|
|||
|---|---|---|---|
|
#18+
Симонов Денис, CREATE TABLE CARDSCLA ( ARTICUL T_ARTICUL COLLATE PXW_CYRL /* T_ARTICUL = VARCHAR(30) NOT NULL */, CLASSIF INTEGER NOT NULL, CARDTYPE T_CARD_TYPE /* T_CARD_TYPE = INTEGER NOT NULL */, NAME T_FULL_NAME COLLATE PXW_CYRL /* T_FULL_NAME = VARCHAR(80) NOT NULL */, MESURIMENT T_MESURIMENT /* T_MESURIMENT = INTEGER NOT NULL */, COUNTRY T_COUNTRY /* T_COUNTRY = INTEGER */, COMMENT T_COMMENT /* T_COMMENT = VARCHAR(255) */, CLIENT_INDEX T_CLIENT_INDEX /* T_CLIENT_INDEX = INTEGER */, PLACE_INDEX T_CLIENT_INDEX /* T_CLIENT_INDEX = INTEGER */, MANUFACTURER T_MANUFACTURER /* T_MANUFACTURER = INTEGER */, TRADE_MARK T_TRADE_MARK /* T_TRADE_MARK = INTEGER */, ADD_PARAM1 T_ADD_PARAM /* T_ADD_PARAM = VARCHAR(80) */, ADD_PARAM2 T_ADD_PARAM /* T_ADD_PARAM = VARCHAR(80) */, ADD_PARAM3 T_ADD_PARAM /* T_ADD_PARAM = VARCHAR(80) */, ADD_PARAM4 T_ADD_PARAM /* T_ADD_PARAM = VARCHAR(80) */, ADD_PARAM5 T_ADD_PARAM /* T_ADD_PARAM = VARCHAR(80) */, IS_ACCEPT T_BOOLEAN /* T_BOOLEAN = CHAR(1) DEFAULT 'F' NOT NULL CHECK (value in ('F','T')) */, IS_USED T_BOOLEAN /* T_BOOLEAN = CHAR(1) DEFAULT 'F' NOT NULL CHECK (value in ('F','T')) */, IS_COMPLECT T_BOOLEAN /* T_BOOLEAN = CHAR(1) DEFAULT 'F' NOT NULL CHECK (value in ('F','T')) */, IS_ASSORTIMENT T_BOOLEAN /* T_BOOLEAN = CHAR(1) DEFAULT 'F' NOT NULL CHECK (value in ('F','T')) */, CARD_KIND T_CARD_KIND /* T_CARD_KIND = CHAR(1) NOT NULL CHECK (value in ('N', 'S', 'W')) */, SCALE_TYPE T_SCALE_TYPE /* T_SCALE_TYPE = INTEGER */, MODDATE T_DATE NOT NULL /* T_DATE = DATE NOT NULL */, MODMANAGER T_CODES NOT NULL /* T_CODES = INTEGER NOT NULL */, BARCODE_COUNT T_COUNT /* T_COUNT = INTEGER DEFAULT 0 NOT NULL */, PACK_COUNT T_COUNT /* T_COUNT = INTEGER DEFAULT 0 NOT NULL */, INSDATE T_DATE_NULL /* T_DATE_NULL = DATE */, MANAGER T_FID /* T_FID = INTEGER */, LOGISTIC T_FID /* T_FID = INTEGER */, GR T_GR /* T_GR = VARCHAR(5) */, SECTION T_FID /* T_FID = INTEGER */, SERTIF T_STR_VALUE /* T_STR_VALUE = VARCHAR(255) */, BARCODE T_BARCODE_NULL /* T_BARCODE_NULL = VARCHAR(30) */, BRUTTO T_QUANTITY /* T_QUANTITY = DOUBLE PRECISION DEFAULT 0 NOT NULL */, NETTO T_QUANTITY /* T_QUANTITY = DOUBLE PRECISION DEFAULT 0 NOT NULL */, WASTERATE T_PERCENT /* T_PERCENT = DOUBLE PRECISION DEFAULT 0 NOT NULL */, SHORTNAME T_NAME_NULL /* T_NAME_NULL = VARCHAR(40) */, KRIT_OST T_QUANTITY /* T_QUANTITY = DOUBLE PRECISION DEFAULT 0 NOT NULL */, KATMANAGER T_FID /* T_FID = INTEGER */, TOVAR T_FID /* T_FID = INTEGER */, RZSCALE T_FID /* T_FID = INTEGER */, MATERIAL T_FID /* T_FID = INTEGER */, COLOR T_FID /* T_FID = INTEGER */, PRMODEL T_CUSTOM /* T_CUSTOM = VARCHAR(30) */, PRCOLOR T_CUSTOM /* T_CUSTOM = VARCHAR(30) */, PRMATER T_CUSTOM /* T_CUSTOM = VARCHAR(30) */, PRDELIM T_STR_VALUE NOT NULL COLLATE PXW_CYRL /* T_STR_VALUE = VARCHAR(255) */, PRVIEW T_ID /* T_ID = INTEGER NOT NULL */, PRARTICUL T_STR_VALUE COLLATE PXW_CYRL /* T_STR_VALUE = VARCHAR(255) */, SROKGODN T_QUANTITY /* T_QUANTITY = DOUBLE PRECISION DEFAULT 0 NOT NULL */, IS_CASHQUANT T_INT_BOOLEAN NOT NULL /* T_INT_BOOLEAN = SMALLINT DEFAULT 0 NOT NULL CHECK (value in (-1,0,1)) */, XYZ T_GR /* T_GR = VARCHAR(5) */, CUR_TYPE T_CUR_TYPE COLLATE PXW_CYRL /* T_CUR_TYPE = VARCHAR(6) */, VOLUME T_QUANTITY NOT NULL /* T_QUANTITY = DOUBLE PRECISION DEFAULT 0 NOT NULL */, GENDER T_ID DEFAULT 0 /* T_ID = INTEGER NOT NULL */, ANALOG_KIND T_ID default 0 /* T_ID = INTEGER NOT NULL */, IS_CASHPRICE T_INT_BOOLEAN /* T_INT_BOOLEAN = SMALLINT DEFAULT 0 NOT NULL CHECK (value in (-1,0,1)) */ ); CREATE TABLE CLASSIF ( ID_CLASSIF T_CLASSIF /* T_CLASSIF = INTEGER NOT NULL */, PARENT_CLASSIF T_CLASSIF /* T_CLASSIF = INTEGER NOT NULL */, NAME_CLASSIF T_NAME /* T_NAME = VARCHAR(40) NOT NULL */, TYPE_CLASSIF T_CLASSIF_TYPE /* T_CLASSIF_TYPE = INTEGER NOT NULL */, LINK_CLASSIF INTEGER, ITEMCOUNT T_COUNT /* T_COUNT = INTEGER DEFAULT 0 NOT NULL */ ); /******************************************************************************/ /*** Primary keys ***/ /******************************************************************************/ ALTER TABLE CARDSCLA ADD CONSTRAINT PK_CARDSCLA PRIMARY KEY (ARTICUL); ALTER TABLE CLASSIF ADD CONSTRAINT PK_CLASSIF PRIMARY KEY (ID_CLASSIF); /******************************************************************************/ /*** Foreign keys ***/ /******************************************************************************/ ALTER TABLE CARDSCLA ADD CONSTRAINT FK_CARDSCLA_CLASSIF FOREIGN KEY (CLASSIF) REFERENCES CLASSIF (ID_CLASSIF) ON DELETE CASCADE; ALTER TABLE CLASSIF ADD CONSTRAINT FK_CLASSIFS_CLASSIF_TYPE FOREIGN KEY (TYPE_CLASSIF) REFERENCES CLASSIF_TYPE (ID_CLASSIF_TYPE) ON DELETE NO ACTION ON UPDATE CASCADE; /******************************************************************************/ /*** Indices ***/ /******************************************************************************/ CREATE INDEX CARDSCLANAMEINDEX ON CARDSCLA (NAME); CREATE INDEX CARDSCLA_IDX_ANALOG ON CARDSCLA (ANALOG_KIND); CREATE INDEX CLASSIF_PARENT ON CLASSIF (PARENT_CLASSIF); CREATE INDEX CLASSIF_PARENT_CLASSIF ON CLASSIF (PARENT_CLASSIF); ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.04.2015, 15:21 |
|
||
|
Рекурсивный CTE
|
|||
|---|---|---|---|
|
#18+
Gallemar, если я правильно понял, то что ты хочешь, то должно бы так Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.04.2015, 15:42 |
|
||
|
Рекурсивный CTE
|
|||
|---|---|---|---|
|
#18+
Симонов Денис,супер,большое спасибо ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.04.2015, 16:25 |
|
||
|
Рекурсивный CTE
|
|||
|---|---|---|---|
|
#18+
GallemarВложимость может быть любой. Если действительно любой, то CTE тебе не поможет. Либо классическая рекурсия, либо обходи циклами. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.04.2015, 10:13 |
|
||
|
|

start [/forum/topic.php?fid=40&fpage=79&tid=1562939]: |
0ms |
get settings: |
11ms |
get forum list: |
13ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
91ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
58ms |
get tp. blocked users: |
2ms |
| others: | 10ms |
| total: | 207ms |

| 0 / 0 |
