|
Прошу помощи в решении задачи
|
|||
---|---|---|---|
#18+
День добрый. Новичок в SQL, спецы прошу Вашей помощи. Есть задача: Имею две таблицы (создавал временные, для ускорения выборок). В первой таблице создал поле, в которое нужно заносить данные из другой таблицы по некоторому условию. Одной записи из первой таблице может соответствовать несколько значений из второй, в этом случае нужно просто дописать в поле через разделитель ; это значение. Пока начал с такого кода: DECLARE p4 VARCHAR2(2000); BEGIN FOR j IN ( select * from XXT.XXT_PZV_321108_2018to2020_v1 pzv) loop BEGIN p4:=''; FOR i IN ( select * from XXT.XXT_EDV_321108_2017to2020_v1 edv where 1=1 and ( lower (j.receiver_name) = lower (edv.payer_name) or lower (j.receiver_name) = lower(edv.tir2) or lower(j.receiver_name) = lower (substr ( edv.payer_name, instr(edv.payer_name, '//',1,1)+2, instr(edv.payer_name, '//',1,2)-3 )) ) and edv.r_date<j.r_date and edv.a2>=j.amount ) LOOP --дописываем значение в поле END LOOP; END; end loop; END; ... |
|||
:
Нравится:
Не нравится:
|
|||
09.08.2020, 11:25 |
|
Прошу помощи в решении задачи
|
|||
---|---|---|---|
#18+
как дописывать значения в ячейку тоже пока не понимаю, первый раз вышел за рамки обычного select-а ... |
|||
:
Нравится:
Не нравится:
|
|||
09.08.2020, 11:27 |
|
Прошу помощи в решении задачи
|
|||
---|---|---|---|
#18+
Может плохо описал задачу, пока начал читать про курсоры и циклы... ... |
|||
:
Нравится:
Не нравится:
|
|||
09.08.2020, 11:29 |
|
Прошу помощи в решении задачи
|
|||
---|---|---|---|
#18+
На каком-нибудь паскале это сделать легко, через массив. А вот sql для меня пока загадка ... |
|||
:
Нравится:
Не нравится:
|
|||
09.08.2020, 12:30 |
|
Прошу помощи в решении задачи
|
|||
---|---|---|---|
#18+
Понял что на данном этапе задача для меня будет тяжеловата. Немного упростил ее, соединив таблицы по условию, получил примерно такую таблицу: магазин | товар --------------------------------- 1-й_магазин | товар_1 1-й_магазин | товар_2 1-й_магазин | товар_3 1-й_магазин | товар_4 2-й_магазин | товар_5 3-й_магазин | товар_6 3-й_магазин | товар_7 3-й_магазин | товар_8 3-й_магазин | товар_9 3-й_магазин | товар_10 3-й_магазин | товар_11 4-й_магазин | товар_12 4-й_магазин | товар_13 5-й_магазин | товар_14 Как средствами sql привести ее к виду: магазин | товары 1-й_магазин | товар_1; товар_2; товар_3; товар_4; 2-й_магазин | товар_5; 3-й_магазин | товар_6; товар_7; товар_8; товар_9; товар_10; товар_11; 4-й_магазин | товар_12; товар_13; 5-й_магазин | товар_14 ... |
|||
:
Нравится:
Не нравится:
|
|||
09.08.2020, 14:13 |
|
Прошу помощи в решении задачи
|
|||
---|---|---|---|
#18+
pavelbp Одной записи из первой таблице может соответствовать несколько значений из второй, в этом случае нужно просто дописать в поле через разделитель ; это значение На каком-нибудь паскале это сделать легко, через массив. А вот sql для меня пока загадка LISTAGG и все это можно сделать одним UPDATE. SY. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.08.2020, 14:15 |
|
Прошу помощи в решении задачи
|
|||
---|---|---|---|
#18+
Новичку нужно двигаться последовательно, от простого к сложному. Начните с какого-нибудь учебника. Код: 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. 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.
... |
|||
:
Нравится:
Не нравится:
|
|||
09.08.2020, 14:19 |
|
Прошу помощи в решении задачи
|
|||
---|---|---|---|
#18+
pavelbp, Tы пытаешься денормализовать данные испоганив relational design. И что будет если сессия A удалит товар_1 из 1-й_магазин а в тоже время сессия Б добавит товар_5 в 1-й_магазин? Придется сериализовать транзакции и соответственно прощай производительнось. SY. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.08.2020, 14:24 |
|
Прошу помощи в решении задачи
|
|||
---|---|---|---|
#18+
SY, не совсем наверное правильно написал, магазин | товар --------------------------------- 1-й_магазин | товар_1 1-й_магазин | товар_2 1-й_магазин | товар_3 1-й_магазин | товар_4 2-й_магазин | товар_5 3-й_магазин | товар_6 3-й_магазин | товар_7 3-й_магазин | товар_8 3-й_магазин | товар_9 3-й_магазин | товар_10 3-й_магазин | товар_11 4-й_магазин | товар_12 4-й_магазин | товар_13 5-й_магазин | товар_14 это выборка (select из двух таблиц), хочу выборку привести к такому виду: магазин | товары 1-й_магазин | товар_1; товар_2; товар_3; товар_4; 2-й_магазин | товар_5; 3-й_магазин | товар_6; товар_7; товар_8; товар_9; товар_10; товар_11; 4-й_магазин | товар_12; товар_13; 5-й_магазин | товар_14 ... |
|||
:
Нравится:
Не нравится:
|
|||
09.08.2020, 14:43 |
|
Прошу помощи в решении задачи
|
|||
---|---|---|---|
#18+
dmdmdm, Спасибо, за хороший пример! сейчас поковыряю еще в эту сторону. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.08.2020, 14:46 |
|
Прошу помощи в решении задачи
|
|||
---|---|---|---|
#18+
pavelbp, Так я уже намeкал GROUPB BY магазин + LISTAGG товар. SY. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.08.2020, 14:47 |
|
Прошу помощи в решении задачи
|
|||
---|---|---|---|
#18+
dmdmdm, А теперь: Session 1: Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10.
Session 2: Код: plsql 1. 2. 3. 4. 5. 6.
Session 2 висит. Sessiuon 1: Код: plsql 1. 2. 3. 4. 5.
Session 2 закончила UPDATE. Session 2: Код: plsql 1. 2. 3. 4. 5.
Смотрим: Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9.
SY. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.08.2020, 15:04 |
|
Прошу помощи в решении задачи
|
|||
---|---|---|---|
#18+
Задача еще немного усложнилась: магазин | товар | цвет --------------------------------- 1-й_магазин | товар_1 | синий 1-й_магазин | товар_2 | красный 1-й_магазин | товар_3 | желтый 1-й_магазин | товар_4 | синий 2-й_магазин | товар_5 | оражевый 3-й_магазин | товар_6 | красный 3-й_магазин | товар_7 | красный 3-й_магазин | товар_8 | желтый 3-й_магазин | товар_9 | желтый 3-й_магазин | товар_10 | зеленый 3-й_магазин | товар_11 | зеленый 4-й_магазин | товар_12 | оражевый 4-й_магазин | товар_13 | синий 5-й_магазин | товар_14 | зеленый это выборка (select из двух таблиц), нужно привести ее к такому виду: магазин | товары 1-й_магазин | товар_1 цвет синий; товар_2 цвет красный; товар_3 цвет желтый; товар_4 цвет синий; 2-й_магазин | товар_5 цвет оражевый; 3-й_магазин | товар_6 цвет красный; товар_7 цвет красный; товар_8 цвет желтый; товар_9 цвет желтый; товар_10 цвет зеленый; товар_11 цвет зеленый; 4-й_магазин | товар_12 цвет оражевый; товар_13 цвет синий; 5-й_магазин | товар_14 цвет зеленый; есть функция которая еще и столбцы объединяет как строковые переменные? ... |
|||
:
Нравится:
Не нравится:
|
|||
09.08.2020, 15:18 |
|
Прошу помощи в решении задачи
|
|||
---|---|---|---|
#18+
pavelbpесть функция которая еще и столбцы объединяет как строковые переменные? Конкатеняция. Это не функция, это оператор. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
09.08.2020, 15:35 |
|
Прошу помощи в решении задачи
|
|||
---|---|---|---|
#18+
pavelbp есть функция которая еще и столбцы объединяет как строковые переменные? val1 || val2 ... |
|||
:
Нравится:
Не нравится:
|
|||
09.08.2020, 15:36 |
|
Прошу помощи в решении задачи
|
|||
---|---|---|---|
#18+
dmdmdm pavelbp есть функция которая еще и столбцы объединяет как строковые переменные? val1 || val2 https://docs.oracle.com/cd/B19306_01/server.102/b14200/functions026.htm только неудобная, принимает всего два параметра, на переменное количество не сподобились ... |
|||
:
Нравится:
Не нравится:
|
|||
09.08.2020, 22:11 |
|
|
start [/forum/topic.php?fid=52&msg=39987897&tid=1880990]: |
0ms |
get settings: |
10ms |
get forum list: |
12ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
60ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
48ms |
get tp. blocked users: |
1ms |
others: | 318ms |
total: | 469ms |
0 / 0 |