|
Иерархический запрос с условиями
|
|||
---|---|---|---|
#18+
Блин ребят, помогите, никак не могу дотукать, застрял что-то. Есть ирерархическая таблица товаров G_Product, в ней колонки G_Product, G_Product_Par и Name. Уровень вложенности не ограничен. Нужно вывести иерархию вместе с дочками, причем только те категории и товары, у которых были продажи/приход за данный период времени. к примеру Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11.
как к ним родителей прикрутить? Чтобы отчет вышел вида Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11.
Отступы необязательно, главное принцип. Пытался сделать вот так, но иерархия снизу вверх идет, и потом после каждого товара добавляется его иерархия Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21.
... |
|||
:
Нравится:
Не нравится:
|
|||
08.09.2016, 08:12 |
|
Иерархический запрос с условиями
|
|||
---|---|---|---|
#18+
Сделай distinct и обойди данные ещё раз сверху-вниз для сортировки. ... |
|||
:
Нравится:
Не нравится:
|
|||
08.09.2016, 08:59 |
|
Иерархический запрос с условиями
|
|||
---|---|---|---|
#18+
aidynchik, Не просто это. Почитай вот здесь - http://gsbelarus.com/pw/articles/post/derev-ia-v-sql/. ... |
|||
:
Нравится:
Не нравится:
|
|||
08.09.2016, 16:28 |
|
Иерархический запрос с условиями
|
|||
---|---|---|---|
#18+
aidynchik, Проблема в том что ты начинаешь обход дерева не от корневых групп, т.е. от групп у которых G_PRODUCT_PAR IS NULL маленький пример на псевдотаблицах Код: 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.
здесь одна проблема группы будут выводится даже если по её товарам нет продаж ... |
|||
:
Нравится:
Не нравится:
|
|||
08.09.2016, 17:27 |
|
Иерархический запрос с условиями
|
|||
---|---|---|---|
#18+
Симонов Денис, так я потому и начал с конца, чтобы лишние категории не выводить =) ... |
|||
:
Нравится:
Не нравится:
|
|||
08.09.2016, 17:55 |
|
Иерархический запрос с условиями
|
|||
---|---|---|---|
#18+
aidynchik Код: plsql 1. 2.
Это надо же настолько не понимать CTE и так изуродовать запрос :'( ... |
|||
:
Нравится:
Не нравится:
|
|||
08.09.2016, 20:19 |
|
Иерархический запрос с условиями
|
|||
---|---|---|---|
#18+
hvlad, лучше бы дельным советом помогли, не лень же писать свое мнение обо мне ... |
|||
:
Нравится:
Не нравится:
|
|||
08.09.2016, 21:04 |
|
Иерархический запрос с условиями
|
|||
---|---|---|---|
#18+
aidynchik, тебе тут достаточно помогают. А вот других на твоём примере поучить - этого не было. Я восполнил пробел. ... |
|||
:
Нравится:
Не нравится:
|
|||
08.09.2016, 21:43 |
|
Иерархический запрос с условиями
|
|||
---|---|---|---|
#18+
hvlad, заранее извинте, но вы других поучили бы гораздо больше дав дельный совет, а не излагая философские фразы ... |
|||
:
Нравится:
Не нравится:
|
|||
08.09.2016, 21:52 |
|
Иерархический запрос с условиями
|
|||
---|---|---|---|
#18+
ГхостикСделай distinct и обойди данные ещё раз сверху-вниз для сортировки. что значит обойти данные еще раз? ... |
|||
:
Нравится:
Не нравится:
|
|||
08.09.2016, 22:19 |
|
Иерархический запрос с условиями
|
|||
---|---|---|---|
#18+
aidynchikГхостикСделай distinct и обойди данные ещё раз сверху-вниз для сортировки. что значит обойти данные еще раз? даже если тебе это удастся производительность будет ниже плинтуса. ... |
|||
:
Нравится:
Не нравится:
|
|||
08.09.2016, 22:36 |
|
Иерархический запрос с условиями
|
|||
---|---|---|---|
#18+
Симонов Денис, и что эта задача никак не решается что ли... она же довольно тривиальная - вытащить все товары с категориями проданные за месяц ... |
|||
:
Нравится:
Не нравится:
|
|||
09.09.2016, 06:07 |
|
Иерархический запрос с условиями
|
|||
---|---|---|---|
#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.
... |
|||
:
Нравится:
Не нравится:
|
|||
09.09.2016, 07:33 |
|
Иерархический запрос с условиями
|
|||
---|---|---|---|
#18+
вот эта часть Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11.
так не лучше будет? Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11.
... |
|||
:
Нравится:
Не нравится:
|
|||
09.09.2016, 08:04 |
|
Иерархический запрос с условиями
|
|||
---|---|---|---|
#18+
aidynchik, Я не говорил, что не решается. Я говорил о низкой скорости подобного рода запросов ... |
|||
:
Нравится:
Не нравится:
|
|||
09.09.2016, 08:05 |
|
Иерархический запрос с условиями
|
|||
---|---|---|---|
#18+
exists, конечно лучше, спасибо! Вообще всем спасибо за помощь и направления ... |
|||
:
Нравится:
Не нравится:
|
|||
09.09.2016, 08:14 |
|
Иерархический запрос с условиями
|
|||
---|---|---|---|
#18+
Симонов ДенисЯ говорил о низкой скорости подобного рода запросовЕсли объем данных будет большой, можно положить отфильтрованное дерево в gtt с индексами и обходить сверху-вниз уже её. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.09.2016, 08:22 |
|
Иерархический запрос с условиями
|
|||
---|---|---|---|
#18+
ГхостикСимонов ДенисЯ говорил о низкой скорости подобного рода запросовЕсли объем данных будет большой, можно положить отфильтрованное дерево в gtt с индексами и обходить сверху-вниз уже её. можете пояснить для особо тупых, что значит обходить сверху-вниз ... |
|||
:
Нравится:
Не нравится:
|
|||
09.09.2016, 08:25 |
|
Иерархический запрос с условиями
|
|||
---|---|---|---|
#18+
aidynchik, у тебя обход снизу вверх, т.е. от листьев к корню, в моём примере сверху вниз. Гхостик предлагает удалить дубликаты корня и ветвей в твоём изначальном дереве с помощью distinct и засунуть выборку в GTT. А потом по этой GTT сделать ещё один рекурсивный запрос уже сверху вниз для получения правильного порядка. В его решении два преимущества: во-первых GTT можно сделать индексированным, а во-вторых это поможет избежать многократного перевыполнения запроса строящего твоё изначальное дерево. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.09.2016, 09:30 |
|
Иерархический запрос с условиями
|
|||
---|---|---|---|
#18+
aidynchik, вот это место уже говорит о том, что будут тормоза, и что надо бы движение товаров (SKLAD и ZAKAZ_DETAILS) слить в одну таблицу. Код: sql 1. 2. 3. 4. 5. 6.
... |
|||
:
Нравится:
Не нравится:
|
|||
09.09.2016, 12:40 |
|
|
start [/forum/topic.php?fid=40&msg=39306251&tid=1561972]: |
0ms |
get settings: |
12ms |
get forum list: |
13ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
55ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
53ms |
get tp. blocked users: |
1ms |
others: | 17ms |
total: | 169ms |
0 / 0 |