Моя проблема в этом. Я обращаюсь к плохо разработанной системе инвентаризации оборудования, и то, что у нее есть, - это несколько уровней оборудования в одной таблице.SQL-запрос для нескольких уровней в одной таблице
Для примера:
Таблица: Оборудование
|EQ_1 | EQ_2|
|123 | |
|123 | 456 |
|123 | 567 |
|456 | 789 |
|567 | |
|789 | 987 |
Как вы можете увидеть первую часть оборудования имеет одну запись для себя 123, и еще две записи для единиц оборудования, подключенных к нему 456 и 567 Отсюда 567 только сам, но 456 прикреплен к 789, и это дополнительно присоединено к 987.
Я несколько раз присоединился к столу, но я продолжаю работать в оборудовании с более глубокими соединениями, чем я компенсирую. То, что я хотел бы найти, - это способ получить «конечные точки» независимо от того, насколько они глубоки.
Пример:
вход I 123 как часть оборудования, я хочу, чтобы увидеть все оборудование, и я получаю возвращение
123
456
567
789
987
Я делаю этот запрос через PHP код, так что если есть предложения с использованием этого я открыт для него, но поскольку есть сотни тысяч подключений, я бы хотел предотвратить передачу информации с серверов Oracle на веб-сервер и создание нескольких запросов. Pure SQL будет первым выбором, второй шаг PHP/SQL, если вы не сможете показать, что он более эффективен.
Проверьте это: http://stackoverflow.com/questions/2319284/sql-recursive-query-on-self- refrencing-table-oracle –
Вам просто нужен отдельный набор значений, которые находятся в 'eq_1' или' eq_2'? Учитывая результат, который вам нужен, для меня не очевидно, что вам нужно вообще работать с этими связями. –
В примере, который я использовал, есть только одно устройство, ссылки должны быть обработаны, потому что есть тысячи устройств «начальной точки», которые не связаны со всеми значениями – James