![]() |
рекурсивный спуск в таблицу
День добрый! есть такая связка таблиц (в аттаче). У устройства есть порты, которые соединяются между собой, тем самым подключая устройства друг к другу. Реляционная модель. Заполняется данными. Так вот нужно получить список всех устройства, например, идущих вниз по иерархии...
Написал простенькую рекурсию. PHP код:
owner_dev_code - код устройства-владельца порта Она проходит только под одной ветке до тупика. А вот вверх как пониматься для продолжения по другой ветке, я не придумаю... Подсобите идеей, пожалуйста :shot: |
Вложений: 1
схема таблиц
|
непонятны типы полей (может какие уникальные), и по каким возможна связка.
имхо проще с do{....}while() разрулить. имхо в цикле мб запросы со связкой 2 таблиц по коду устройства, с динамическим формированием WHERE. Устройства можно собирать в массив, где оставлять только уникальные значения. Запросы с подзапросами нагружают базу... |
Поле "Код" таблицы Devices уникально, хотя, конечно, не очень красиво сделано - внешний ключ не отражается в первичный, но все же. "Модель" - текст, ну а все остальное - Int.
Ну да, связку в цикле я тоже пробовал, но вот обратно выйти на уровень выше, если по одной из веток найден конец, не выходит |
Цитата:
|
Цитата:
|
Время: 14:35. |
Время: 14:35.
© OSzone.net 2001-