LINUX.ORG.RU

Иерархические запросы


0

2

Доброе время суток.
В оракле для иерархических запросов есть connect by. В простых запросах все ясно (есть дерево например подразделений фирмы, каждое ссылается на вверху стоящее, как перебрать все подразделения понятно), а как если нужно найти оптимальную запись. Например:
есть у нас пожелание купить зеленого кракодила с пупырашками. Есть магазин игрушек (таблица) в ней столбцы:
название игрушки
цвет
особенности.
Вот я хочу купить крокодила зеленого с пупырашками, если он есть то купить его, если нету, то тогда либо зеленого крокодила, либо зеленого кого-нибудь с пупырушками, либо крокодила с пупырашками, но не зеленного, если таких тоже нет, то просто либо зеленого, либо крокодила, либо с пупырашками, если и такого нету, то просто любую игрушку:) Т.е. у нас есть иерархия:
id id_parent name color type
1__null______игрушка___null__null
2__1_________крокодил__зелен_null
3__2_________крокодил__зелен_пупыр
4__1_________матрешка__null__null
и т.д.

Подскажите как выбрать самую подходящую игрушку?:)

★★

Последнее исправление: DDR (всего исправлений: 1)

А зачем тут иерархический запрос? Просто сделай выборку из таблицы с добавлением поля «ранг», где будет 1 если запись содержит такие-то условия или же 2 если такие-то, или же 3 если такие-то... Сортируешь выборку по возрастанию ранга.

static_lab ★★★★★
()
Ответ на: комментарий от static_lab

Ну я в итоге так и сделал:) Спасибо)

DDR ★★
() автор топика
Ответ на: комментарий от static_lab

Я через union all сделал:)

DDR ★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.