Отговорете според коментарите по въпроса. Изпробвах го на база данни SQLite и тъй като синтаксисът може да е неправилен в сравнение с SQLServer, мога само да ви дам указания. Нямам връзка към база данни.
Намиране на основите:
- Намерете двойката mat_no, дете в mat_rel, където родителят Е NULL
- Намерете всички редове в mat_rel, които съответстват на mat_no и където родителят съответства на дъщерния от 1. Добавете SQL от 1. в JOIN като (SELECT ..).
Намиране на несъответствие (сравняване на дете=дете и mat_no=mat_no):
- Намерете всички редове от 2, където няма съответстващ ред в mat_item. Използвайте LEFT JOIN или NOT EXISTS
- Намерете всички редове в mat_item, където няма съответстващ ред в mat_rel от 2. Използвайте RIGHT JOIN или NOT EXISTS.
Намиране на 3 и 4:
- Използвайте и двата SQL с UNION ALL