|
nested table при группировке пробросить его значение без изменений дальше
|
|||
---|---|---|---|
#18+
если группировать по полю с nested table, получаем oracleORA-00932: inconsistent datatypes: expected - got CUSTOM_NESTED_TABLE_TYPE Известно, что в этой группировке у всех строк в группе одно значение этого поля, т.е. реально не нужно сравнивать значение этого поля из группы - достаточно взять значение этого поля из любой строки группы. Как это сделать? Пример: Код: plsql 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.
хотелось бы вместо max что-то, что выдаст любой address из группы, с тем же типом xx_test_address_tab. Можно взять например max(custid), всунуть это как подселект, а уровнем выше по ИД вытащить значение поля, типа того: Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12.
, но хотелось бы избежать двойного чтения таблицы. Преобразование типа в текст, группировка текста, затем обратное преобразование в тип нежелательно, т.к. есть вероятность превысить лимит varchar2 в 32К. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.01.2020, 13:07 |
|
nested table при группировке пробросить его значение без изменений дальше
|
|||
---|---|---|---|
#18+
Shredder2003, не совсем понял что надо Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14.
..... stax ... |
|||
:
Нравится:
Не нравится:
|
|||
17.01.2020, 13:47 |
|
nested table при группировке пробросить его значение без изменений дальше
|
|||
---|---|---|---|
#18+
Shredder2003 Преобразование типа в текст ... |
|||
:
Нравится:
Не нравится:
|
|||
17.01.2020, 14:42 |
|
nested table при группировке пробросить его значение без изменений дальше
|
|||
---|---|---|---|
#18+
Stax, что надо, в этом примере: выборка из таблицы xx_test_customers, сгруппированная по полю name, каждая строка выборки содержит два поля: 1. name 2. address, где address - значение из любой строки этой группы. Вот решение: Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12.
но оно плохо тем, что тут два чтения одной таблицы. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.01.2020, 14:46 |
|
nested table при группировке пробросить его значение без изменений дальше
|
|||
---|---|---|---|
#18+
Shredder2003, у меня мало опыта работы с обьектными таблицами наскоко я помню для сортировки/группировки обьектный тип должен иметь метод MAP/ORDER ps если таблица индексирована по custid, то имхо не так и страшен "второй" проход ..... stax ... |
|||
:
Нравится:
Не нравится:
|
|||
17.01.2020, 15:14 |
|
nested table при группировке пробросить его значение без изменений дальше
|
|||
---|---|---|---|
#18+
... |
|||
:
Нравится:
Не нравится:
|
|||
17.01.2020, 15:15 |
|
nested table при группировке пробросить его значение без изменений дальше
|
|||
---|---|---|---|
#18+
Shredder2003 address - значение из любой строки этой группы Код: plsql 1. 2. 3. 4. 5. 6.
Можно группировка с заходом по rowid. Код: plsql 1. 2. 3.
Вообще это всё выглядит как крайне сомнительный дизайн, но если хочется усугубить проблему - можно сделать объектную обёртку над массивом для группировки. Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14.
Код: plsql 1. 2. 3. 4.
... |
|||
:
Нравится:
Не нравится:
|
|||
17.01.2020, 15:28 |
|
nested table при группировке пробросить его значение без изменений дальше
|
|||
---|---|---|---|
#18+
Кобанчег можно сделать объектную обёртку над массивом для группировки. похоже то, что нужно, но уже сделал свою агрегирующую функцию под этот тип. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.01.2020, 16:11 |
|
nested table при группировке пробросить его значение без изменений дальше
|
|||
---|---|---|---|
#18+
Кобанчег, про MAP знал, но почему-то засело в голове что надо менять xx_test_address_tab в сторону "обьектной" обертки не смекнул .... stax ... |
|||
:
Нравится:
Не нравится:
|
|||
17.01.2020, 16:43 |
|
nested table при группировке пробросить его значение без изменений дальше
|
|||
---|---|---|---|
#18+
Shredder2003 Кобанчег можно сделать объектную обёртку над массивом для группировки. похоже то, что нужно, но уже сделал свою агрегирующую функцию под этот тип. Мне представляется, что в указанных условиях UDAF может быть реализована эффективнее MAP, потому и предложил именно её. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.01.2020, 18:40 |
|
|
start [/forum/topic.php?fid=52&msg=39915429&tid=1881651]: |
0ms |
get settings: |
8ms |
get forum list: |
13ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
76ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
47ms |
get tp. blocked users: |
1ms |
others: | 15ms |
total: | 178ms |
0 / 0 |