• Познакомьтесь с пентестом веб-приложений на практике в нашем новом бесплатном курсе

    «Анализ защищенности веб-приложений»

    🔥 Записаться бесплатно!

  • CTF с учебными материалами Codeby Games

    Обучение кибербезопасности в игровой форме. Более 200 заданий по Active Directory, OSINT, PWN, Веб, Стеганографии, Реверс-инжинирингу, Форензике и Криптографии. Школа CTF с бесплатными курсами по всем категориям.

Как заменить оракловский Сonnect By в Mysql?

  • Автор темы Dymytry
  • Дата начала
D

Dymytry

Знатоки!
Помогите начинающему знатоку разобраться с SQL.

У меня есть следующая таблица с иерархией товаров:
ATTRIBUTE_ID, ATTRIBUTE_PARENT_ID, ATTRIBUTE_VALUE. Мне надо вывести ее так, чтобы была видна ее древовидная структура. То есть

__1 0 BOSS
____2 1 VICE-BOSS
____3 1 BOSS-WIFE
______4 3 BOSS-WIFE-MOM
____4 1 BOSS-BEST-FRIEND

Я разобрался, что в Oracle мне достаточно использовать Connect By, и все действительно работает:
Код:
column padded_name format a30
select lpad(' ', (2 - 1) * 2) || attribute_value as padded_name, attribute_value, attribute_id, attribute_parent_id
from attributes_text
connect by prior attribute_id=attribute_parent_id
start with attribute_parent_id=0

Но в MySQL нет Conenct By. Я видел много статей про иерархии, но как сделать это в MySQL я так и не понял. Можете подсказать что-нибудь, а еще лучше написать? Мне надо сделать какую-то циклическую процедуру что ли?
 
E

etc

Тут надо делать на стороне клиента.
 
D

Dymytry

OK,
а я тем временем встретил вот такую схему, какие ее недостатки вы видите?

Код:
ATTRIBUTE_ID, ATTRIBUTE_NAME, ATTRIBUTE_POSITION

1 BOSS 1
2 _VICE-BOSS 1.1
3 __VICE-BOSS-MOM 1.1.1
4 _BOSS-WIFE 1.2
5 __BOSS-WIFE-MOM 1.2.1

Сортировка по ATTRIBUTE_POSTION даст нужный результат - древовидную структуру, а найти одну ветвь дерева весьма просто через LIKE 1.%

Вообще это у меня набор параметров для EAV структуры, из которого я хочу вывести древовидный каталог одним простым запросом без обработки на клиенте, а потом этот древовидный каталог использовать как меню для выбора категорий. Вооот...
 
E

etc

Схем можно напридумывать скольугодно, только в каждой приходится на клиенте вазюваться.
 
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!