|
Фиксированные ID для каждого уровня иерархии
|
|||
---|---|---|---|
#18+
Всем привет, есть таблица где сидит иерархия для куба аналитики: Код: 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.
Задача - сделать так, чтобы у каждого названия (lvl) был свой ключик и он был уникальный внутри иерархии. Например - для lvl2 ключик это комбинация lvl1+lvl2 - для lvl3 ключик это комбинация lvl1+lvl2+lvl3 ... - для lvl8 ключик это комбинация lvl1+lvl2+lvl3+lvl4+lvl5+lvl6+lvl7+lvl8 В реальной таблице 8 уровней и около 2 тысяч строк. Текущий код это хорошо делает с помощью DENSE_RANK() Код: sql 1. 2. 3. 4. 5. 6. 7.
Проблемы начались при добавлении новых записей в таблицу. Ключи генерятся заново и некоторые из них уже не соответствуют прежним значениям. Куб работает, однако пользователи на эти ключи завязали формулы в экселе и у них поехала отчетность. Задачка: как можно зафиксировать эти ключики каким-то автоматическим образом. Чтобы при добавлении новых записей они не генерились заново все, а добавлялись новые? Нужен какой-то простой кодик, чтобы это делать. В таблице около 2 тысяч записей и 8 уровней (читай колонок с названиями). У меня ничего простого не получается.... спасибо ... |
|||
:
Нравится:
Не нравится:
|
|||
30.09.2020, 11:38 |
|
Фиксированные ID для каждого уровня иерархии
|
|||
---|---|---|---|
#18+
Gena928 Задача - сделать так, чтобы у каждого названия (lvl) был свой ключик и он был уникальный внутри иерархии. Например - для lvl2 ключик это комбинация lvl1+lvl2 - для lvl3 ключик это комбинация lvl1+lvl2+lvl3 ... |
|||
:
Нравится:
Не нравится:
|
|||
30.09.2020, 12:06 |
|
Фиксированные ID для каждого уровня иерархии
|
|||
---|---|---|---|
#18+
invm, не совсем понял. Вот прилетает строка, где 8 колонок для иерархии. Как поможет справочник? ... |
|||
:
Нравится:
Не нравится:
|
|||
30.09.2020, 12:17 |
|
Фиксированные ID для каждого уровня иерархии
|
|||
---|---|---|---|
#18+
Gena928 Как поможет справочник? ... |
|||
:
Нравится:
Не нравится:
|
|||
30.09.2020, 12:19 |
|
Фиксированные ID для каждого уровня иерархии
|
|||
---|---|---|---|
#18+
invm, решение в студию. вы предлагаете развернуть таблицу из горизонтальной в вертикальную и потом проверять каждую прилетевшую колонку на предмет есть/нет в справочнике? ... |
|||
:
Нравится:
Не нравится:
|
|||
30.09.2020, 12:38 |
|
Фиксированные ID для каждого уровня иерархии
|
|||
---|---|---|---|
#18+
Gena928 вы предлагаете развернуть таблицу из горизонтальной в вертикальную и потом проверять каждую прилетевшую колонку на предмет есть/нет в справочнике? Я предлагаю N соединений со справочником, а не разворачивать таблицу. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.09.2020, 12:45 |
|
Фиксированные ID для каждого уровня иерархии
|
|||
---|---|---|---|
#18+
invm, а по каким полям джойнится? у исходника на 8 уровне ключом является lvl1+lvl2+lvl3+lvl4+lvl5+lvl6+lvl7+lvl8 ... |
|||
:
Нравится:
Не нравится:
|
|||
30.09.2020, 12:54 |
|
Фиксированные ID для каждого уровня иерархии
|
|||
---|---|---|---|
#18+
Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16.
Справочник можно поддерживать триггером на MyTable ... |
|||
:
Нравится:
Не нравится:
|
|||
30.09.2020, 13:19 |
|
Фиксированные ID для каждого уровня иерархии
|
|||
---|---|---|---|
#18+
invm Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16.
Справочник можно поддерживать триггером на MyTable Проблема в том, что N'Отечественные' N'Молотки' и N'Отечественные' N'Пилы' - это разные категории товаров. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.09.2020, 13:46 |
|
Фиксированные ID для каждого уровня иерархии
|
|||
---|---|---|---|
#18+
msLex Проблема в том, что N'Отечественные' N'Молотки' и N'Отечественные' N'Пилы' - это разные категории товаров. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.09.2020, 13:52 |
|
Фиксированные ID для каждого уровня иерархии
|
|||
---|---|---|---|
#18+
invm, спасибо. я на всякий случай в таблицу еще добавлю название родителя. Так будет уникальной комбинация [level], [name], [родитель]. Код: 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. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54.
... |
|||
:
Нравится:
Не нравится:
|
|||
30.09.2020, 13:55 |
|
Фиксированные ID для каждого уровня иерархии
|
|||
---|---|---|---|
#18+
invm msLex Проблема в том, что N'Отечественные' N'Молотки' и N'Отечественные' N'Пилы' - это разные категории товаров. Обе N'Отечественные' находятся на одном уровне - 4, но к ним разные пути. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.09.2020, 13:56 |
|
Фиксированные ID для каждого уровня иерархии
|
|||
---|---|---|---|
#18+
Gena928 invm, спасибо. я на всякий случай в таблицу еще добавлю название родителя. Так будет уникальной комбинация [level], [name], [родитель]. Код: 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. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54.
Как только у вас появятся "Молотки"->"Отечественные"->"С деревянной ручкой" и "Топоры"->"Отечественные"->"С деревянной ручкой" одного родителя не хватит. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.09.2020, 13:59 |
|
Фиксированные ID для каждого уровня иерархии
|
|||
---|---|---|---|
#18+
msLex Как только у вас появятся "Молотки"->"Отечественные"->"С деревянной ручкой" и "Топоры"->"Отечественные"->"С деревянной ручкой" одного родителя не хватит. Это да. Тогда надо вводить понятие id родителя и в момент вставки исходных данных искать его. Что в общем-то жопа. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.09.2020, 14:14 |
|
Фиксированные ID для каждого уровня иерархии
|
|||
---|---|---|---|
#18+
msLex Обе N'Отечественные' находятся на одном уровне - 4, но к ним разные пути. Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16.
... |
|||
:
Нравится:
Не нравится:
|
|||
30.09.2020, 14:29 |
|
Фиксированные ID для каждого уровня иерархии
|
|||
---|---|---|---|
#18+
Gena928 msLex Как только у вас появятся "Молотки"->"Отечественные"->"С деревянной ручкой" и "Топоры"->"Отечественные"->"С деревянной ручкой" одного родителя не хватит. Это да. Тогда надо вводить понятие id родителя и в момент вставки исходных данных искать его. Что в общем-то жопа. Что приводит вас к классической древовидной сируктуре id, parent_id, name ... |
|||
:
Нравится:
Не нравится:
|
|||
30.09.2020, 14:36 |
|
Фиксированные ID для каждого уровня иерархии
|
|||
---|---|---|---|
#18+
msLex Что приводит вас к классической древовидной сируктуре id, parent_id, name да это коню понятно. Тут вопрос в том, как сделать эту структуру из горизонтальной таблицы, чтобы это все нормально выглядело и работало. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.09.2020, 14:40 |
|
Фиксированные ID для каждого уровня иерархии
|
|||
---|---|---|---|
#18+
invm msLex Обе N'Отечественные' находятся на одном уровне - 4, но к ним разные пути. Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16.
можно образец вставки данных в справочник? ... |
|||
:
Нравится:
Не нравится:
|
|||
30.09.2020, 14:42 |
|
Фиксированные ID для каждого уровня иерархии
|
|||
---|---|---|---|
#18+
Gena928 можно образец вставки данных в справочник? Код: 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. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61. 62. 63. 64. 65. 66. 67. 68. 69. 70. 71. 72. 73. 74. 75. 76. 77. 78. 79. 80. 81. 82. 83. 84. 85. 86. 87. 88. 89. 90. 91. 92. 93. 94. 95. 96. 97. 98. 99. 100. 101. 102. 103. 104. 105. 106. 107. 108. 109. 110. 111. 112. 113. 114. 115. 116. 117. 118. 119. 120. 121. 122. 123. 124. 125. 126. 127. 128. 129. 130. 131. 132. 133. 134. 135. 136. 137.
... |
|||
:
Нравится:
Не нравится:
|
|||
30.09.2020, 18:33 |
|
Фиксированные ID для каждого уровня иерархии
|
|||
---|---|---|---|
#18+
Можно использовать хэши строк: Код: 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. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61. 62. 63. 64. 65. 66. 67. 68. 69. 70. 71. 72. 73. 74. 75. 76. 77. 78. 79. 80. 81. 82. 83. 84. 85. 86. 87. 88. 89. 90. 91. 92. 93. 94. 95. 96. 97. 98. 99. 100. 101. 102. 103. 104. 105. 106.
... |
|||
:
Нравится:
Не нравится:
|
|||
30.09.2020, 23:12 |
|
Фиксированные ID для каждого уровня иерархии
|
|||
---|---|---|---|
#18+
Предполагается ли удаление данных из таблицы? Предполагается ли редактирование записей с сохранением ID? Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14.
... |
|||
:
Нравится:
Не нравится:
|
|||
01.10.2020, 11:21 |
|
|
start [/forum/topic.php?fid=46&fpage=46&tid=1685585]: |
0ms |
get settings: |
7ms |
get forum list: |
11ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
41ms |
get topic data: |
11ms |
get forum data: |
2ms |
get page messages: |
102ms |
get tp. blocked users: |
1ms |
others: | 50ms |
total: | 233ms |
0 / 0 |