arogorns
2.02.2016 - 16:11
Гутен таг всем.
Задача следующая: есть таблица с 2 полями (условно А и Б, у обоих тип интеджер)
Таблица содержит замену айди товара в другой таблице. То бишь товар с айди из А теперь является товаром с айди из Б.
Суть в том, что мне нужно найти все существующие цепочки.
Пример
А Б
1 23
........
23 147
........
А вывод 1 -> 23 -> 147 -> ....
По логике тут нужна цепочка. А я за 4 года разлуки с SQL забыл напрочь, хорошо ли Скуль с такими вещами дружит.
Подскажите советом, с чего стартовать?
Цитата (arogorns @ 2.02.2016 - 15:11) |
хорошо ли Скуль с такими вещами дружит |
хорошо
Цитата (arogorns @ 2.02.2016 - 15:11) |
с чего стартовать? |
с нормального описания ТЗ и готовности выписать чек на сумму достаточную для оплаты.
_____________
Стимулятор ~yoomoney - 41001303250491
arogorns
2.02.2016 - 16:51
Цитата (Valick @ 2.02.2016 - 16:34) |
Цитата (arogorns @ 2.02.2016 - 15:11) | хорошо ли Скуль с такими вещами дружит |
хорошо
Цитата (arogorns @ 2.02.2016 - 15:11) | с чего стартовать? |
с нормального описания ТЗ и готовности выписать чек на сумму достаточную для оплаты.
|
Какие все все же стали меркантильные)
Как решить задачу на том же С++ (если представить таблицу как 2-хмерный массив), я понимаю: просто рекурсионной функцией проходишь по каждому элементу таблицы А и формируешь строку, попутно скидывая Айдишки из А в сэт, дабы не повторялись.
А вот как такое же на скуле изобразить, что то не врубаюсь.
З.Ы. я ж не прошу за меня решить) просто вектор задайте, а там я сам)
icedfox
2.02.2016 - 17:05
sergeiss
2.02.2016 - 17:05
Цитата (Valick @ 2.02.2016 - 16:34) |
и готовности выписать чек на сумму достаточную для оплаты |
Я тебя не узнаю...
arogorns, тебе нужен LEFT JOIN в данном случае.
_____________
*
Хэлп по PHP*
Описалово по JavaScript *
Хэлп и СУБД для PostgreSQL*
Обучаю PHP, JS, вёрстке. Интерактивно и качественно. За разумные деньги. *
"накапливаю умение телепатии" (С) и "гуглю за ваш счет" (С)
arogorns, реляционная БД не предназначена для хранения деревьев.
Почитайте например о Nested Sets
_____________
Стимулятор ~yoomoney - 41001303250491
Цитата (sergeiss @ 2.02.2016 - 16:05) |
Я тебя не узнаю... |
разговор о деньгах обычно сильно стимулирует
Цитата (sergeiss @ 2.02.2016 - 16:05) |
тебе нужен LEFT JOIN |
боюсь длинна вложенности ничем не ограничена
_____________
Стимулятор ~yoomoney - 41001303250491
arogorns
2.02.2016 - 17:16
Цитата (Valick @ 2.02.2016 - 17:12) |
Цитата (sergeiss @ 2.02.2016 - 16:05) | тебе нужен LEFT JOIN |
боюсь длинна вложенности ничем не ограничена
|
Именно так. Иначе бы джойном обошелся
sergeiss
2.02.2016 - 17:28
В таком случае почитай вот эту тему
http://phpforum.su/index.php?showtopic=31806 - там и про Мускуль тоже есть.
PS. Подумай о переходе на Постгре... Тогда у тебя будет существенно меньше проблем с БД
_____________
*
Хэлп по PHP*
Описалово по JavaScript *
Хэлп и СУБД для PostgreSQL*
Обучаю PHP, JS, вёрстке. Интерактивно и качественно. За разумные деньги. *
"накапливаю умение телепатии" (С) и "гуглю за ваш счет" (С)
arogorns
2.02.2016 - 19:30
Цитата (sergeiss @ 2.02.2016 - 17:28) |
В таком случае почитай вот эту тему http://phpforum.su/index.php?showtopic=31806 - там и про Мускуль тоже есть.
PS. Подумай о переходе на Постгре... Тогда у тебя будет существенно меньше проблем с БД |
За ссылочку спасибо, изучу.
Переход не вариант. слишком большая и древняя база.
arogorns, по-моему вот что-то подобное
http://stackoverflow.com/a/32775285
arogorns
2.02.2016 - 20:00
выходит, нужен обход дерева с запоминанием корня (чтобы кольца избежать), я верно понимаю?
arogorns
10.02.2016 - 13:05
в общем, обходом получилось) Но появилось дикое желание вырвать руки создателям базы.
всем спасибо)
П.С. напоследок - цитата из лога, дабы было ясно, насколько всё плохо
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:10
Цитата (ИНСИ @ 10.02.2016 - 13:08) |
Смотри в сторону postgresql, наследование. |
из-за такого никто базу переделывать не будет. ей там лет 10+
Быстрый ответ:
Powered by dgreen
Здесь расположена полная версия этой страницы.