У меня есть две таблицы, tabSparePart
и tabSparePartCategory
. Каждая запасная часть относится к категории запасных частей. Мне нужны все запасные части, относящиеся к определенной категории. Но проблема в том, что категория запасных частей может быть «подкатегорией» другой, они ссылаются друг на друга («основные категории» имеют «нуль» в этом столбце FK).SQL-запрос: привязка внешних ссылок
Предположим, мне нужны все запчасти с fiSparePartCategory=1
и все запасные части, принадлежащие к категории, которая является «подкатегорией» category=1
.
Как написать SQL-запрос, который возвращает все запасные части независимо от количества уровней подкатегорий. Надеюсь, вы понимаете мое требование.
Ниже приводится иллюстрация того, что у меня есть. Как сделать его динамичным, чтобы он работал независимо от количества подкатегорий?
Спасибо, Тим
Ссылка на изображение: http://www.bilder-hochladen.net/files/4709-lg-jpg.html
EDIT: Ниже приводится другой статический подход, который работает, когда есть только один уровень подкатегории:
SELECT SparePartName
FROM tabSparePart
WHERE (fiSparePartCategory IN
(SELECT idSparePartCategory
FROM tabSparePartCategory
WHERE (idSparePartCategory = 1) OR
(fiSparePartCategory = 1)))
Ничего себе, это работает, и я еще не понимаю почему. Спасибо :) –
Я сделал SQL-запрос несколько лучше читаемым, так что его немного легче понять. –