[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: цепной запрос
arogorns
Гутен таг всем.

Задача следующая: есть таблица с 2 полями (условно А и Б, у обоих тип интеджер)

Таблица содержит замену айди товара в другой таблице. То бишь товар с айди из А теперь является товаром с айди из Б.

Суть в том, что мне нужно найти все существующие цепочки.
Пример

А Б
1 23
........
23 147
........

А вывод 1 -> 23 -> 147 -> ....

По логике тут нужна цепочка. А я за 4 года разлуки с SQL забыл напрочь, хорошо ли Скуль с такими вещами дружит.

Подскажите советом, с чего стартовать?
Valick
Цитата (arogorns @ 2.02.2016 - 15:11)
хорошо ли Скуль с такими вещами дружит

хорошо
Цитата (arogorns @ 2.02.2016 - 15:11)
с чего стартовать?

с нормального описания ТЗ и готовности выписать чек на сумму достаточную для оплаты.

_____________
Стимулятор ~yoomoney - 41001303250491
arogorns
Цитата (Valick @ 2.02.2016 - 16:34)
Цитата (arogorns @ 2.02.2016 - 15:11)
хорошо ли Скуль с такими вещами дружит

хорошо
Цитата (arogorns @ 2.02.2016 - 15:11)
с чего стартовать?

с нормального описания ТЗ и готовности выписать чек на сумму достаточную для оплаты.

Какие все все же стали меркантильные)

Как решить задачу на том же С++ (если представить таблицу как 2-хмерный массив), я понимаю: просто рекурсионной функцией проходишь по каждому элементу таблицы А и формируешь строку, попутно скидывая Айдишки из А в сэт, дабы не повторялись.

А вот как такое же на скуле изобразить, что то не врубаюсь.

З.Ы. я ж не прошу за меня решить) просто вектор задайте, а там я сам)
icedfox
Возможно оно
sergeiss
Цитата (Valick @ 2.02.2016 - 16:34)
и готовности выписать чек на сумму достаточную для оплаты

Я тебя не узнаю...

arogorns, тебе нужен LEFT JOIN в данном случае.

_____________
* Хэлп по PHP
* Описалово по JavaScript
* Хэлп и СУБД для PostgreSQL

* Обучаю PHP, JS, вёрстке. Интерактивно и качественно. За разумные деньги.

* "накапливаю умение телепатии" (С) и "гуглю за ваш счет" (С)

user posted image
Valick
arogorns, реляционная БД не предназначена для хранения деревьев.
Почитайте например о Nested Sets


_____________
Стимулятор ~yoomoney - 41001303250491
Valick
Цитата (sergeiss @ 2.02.2016 - 16:05)
Я тебя не узнаю...

разговор о деньгах обычно сильно стимулирует
Цитата (sergeiss @ 2.02.2016 - 16:05)
тебе нужен LEFT JOIN

боюсь длинна вложенности ничем не ограничена

_____________
Стимулятор ~yoomoney - 41001303250491
arogorns
Цитата (Valick @ 2.02.2016 - 17:12)
Цитата (sergeiss @ 2.02.2016 - 16:05)
тебе нужен LEFT JOIN

боюсь длинна вложенности ничем не ограничена


Именно так. Иначе бы джойном обошелся
sergeiss
В таком случае почитай вот эту тему http://phpforum.su/index.php?showtopic=31806 - там и про Мускуль тоже есть.

PS. Подумай о переходе на Постгре... Тогда у тебя будет существенно меньше проблем с БД wink.gif

_____________
* Хэлп по PHP
* Описалово по JavaScript
* Хэлп и СУБД для PostgreSQL

* Обучаю PHP, JS, вёрстке. Интерактивно и качественно. За разумные деньги.

* "накапливаю умение телепатии" (С) и "гуглю за ваш счет" (С)

user posted image
arogorns
Цитата (sergeiss @ 2.02.2016 - 17:28)
В таком случае почитай вот эту тему http://phpforum.su/index.php?showtopic=31806 - там и про Мускуль тоже есть.

PS. Подумай о переходе на Постгре... Тогда у тебя будет существенно меньше проблем с БД wink.gif

За ссылочку спасибо, изучу.

Переход не вариант. слишком большая и древняя база.
Guest
arogorns, по-моему вот что-то подобное http://stackoverflow.com/a/32775285
arogorns
выходит, нужен обход дерева с запоминанием корня (чтобы кольца избежать), я верно понимаю?
arogorns
в общем, обходом получилось) Но появилось дикое желание вырвать руки создателям базы.

всем спасибо)

П.С. напоследок - цитата из лога, дабы было ясно, насколько всё плохо

C 42 190 => C 42 107
C 42 189 => A 42 134 => C 42 106 => A 42 134 => C 42 106 => A 42 134 => C 42 106 => A 42 134 => C 42 106 => A 42 134 => C 42 106
C 42 188 => A 42 133
ИНСИ
Смотри в сторону postgresql, наследование.
arogorns
Цитата (ИНСИ @ 10.02.2016 - 13:08)
Смотри в сторону postgresql, наследование.

из-за такого никто базу переделывать не будет. ей там лет 10+
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.