У меня есть две таблицы в базе данных, один список списков и один список зависимостей:
packages
id | name
---------
0 | xorg
1 | gnome-session
2 | gnome-panel
3 | gnome-mixer-applet
4 | gnome-media
depends
package | depends
-----------------
1 | 0
2 | 1
3 | 2
4 | 2
Очевидно, что если я хочу выяснить, от чего зависит пакет, я могу сделать:
SELECT *
FROM packages
INNER JOIN depends
ON packages.id = depends.package
WHERE packages.id = @somenumber
Проблема в том, что это дает мне только один уровень зависимостей (4 зависит от 2, но также зависит от пакетов 1 и 0). Есть ли способ получить все зависимости, не выполняя аналогичные SELECT
s в цикле?
Я бы предпочел, чтобы он работал в SQLite, но я буду использовать другую базу данных, если потребуется (если она бесплатна и доступна в Linux).