Я дергаю себя за функцию поиска данных, которую пытаюсь написать.По сути, этот запрос предназначен для суммирования количества всех voorwerpnummers в таблице Voorwerp_in_Rubriek, сгруппированных по их rubrieknummer, собранным из Rubriek.
После этого я хочу продолжать циклически проходить по сумме, чтобы добраться до их «родителя верхнего уровня».».Rubriek имеет ссылку на внешний ключ с помощью «hoofdrubriek», это будет легче увидеть, поскольку он является родительским в дереве категорий.
Это также означает, что они могут быть вложенными.Значение NULL в столбце hoofdcategory означает, что это родительский элемент верхнего уровня.Идея этого запроса состоит в том, чтобы СУММАТИВНО подсчитать число voorwerpnummers в Voorwerp_in_rubriek и сложить их вместе, пока они не достигнут своего «верхнего уровня родителя».
Поскольку база данных и тестовые данные довольно большие, я решил не добавлять прямыекод к этому вопросу, но вместо этого ссылка на dbfiddle, так что есть больше структуры.
https://dbfiddle.uk/?rdbms=sqlserver_2017&fiddle=8068a52da6a29afffe6dc793398f0998
Я получил его в некоторой степени, используя этот запрос:
SELECT R2.hoofdrubriek ,
COUNT(Vr.rubrieknummer) AS aantal
FROM Rubriek R1
RIGHT OUTER JOIN Rubriek R2 ON R1.rubrieknummer = R2.hoofdrubriek
INNER JOIN Voorwerp_in_rubriek Vr ON R2.rubrieknummer = Vr.rubrieknummer
WHERE NOT EXISTS ( SELECT *
FROM Rubriek
WHERE hoofdrubriek = R2.rubrieknummer )
AND R1.hoofdrubriek IS NOT NULL
GROUP BY Vr.rubrieknummer ,
R2.hoofdrubriek
Но это не возвращает все предметы и провалы в целом.Я надеюсь, что кто-то может мне помочь.