• 15 апреля стартует «Курс «SQL-injection Master» ©» от команды The Codeby

    За 3 месяца вы пройдете путь от начальных навыков работы с SQL-запросами к базам данных до продвинутых техник. Научитесь находить уязвимости связанные с базами данных, и внедрять произвольный SQL-код в уязвимые приложения.

    На последнюю неделю приходится экзамен, где нужно будет показать свои навыки, взломав ряд уязвимых учебных сайтов, и добыть флаги. Успешно сдавшие экзамен получат сертификат.

    Запись на курс до 25 апреля. Получить промодоступ ...

Как заменить оракловский С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

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

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