Odpowiedz zgodnie z komentarzami do pytania. Wypróbowałem to na bazie danych SQLite, a ponieważ składnia może być nieprawidłowa w porównaniu do SQLServer, mogę tylko udzielić wskazówek. Nie mam linku do bazy danych.
Znajdowanie podstaw:
- Znajdź mat_no, parę dzieci w mat_rel, gdzie rodzic JEST NULL
- Znajdź wszystkie wiersze w mat_rel, które pasują do mat_no i gdzie rodzic pasuje do dziecka z 1. Dodaj SQL z 1. w JOIN jak (SELECT ..).
Znajdowanie niezgodności (porównywanie child=child i mat_no=mat_no):
- Znajdź wszystkie wiersze od 2, gdzie nie ma pasującego wiersza w mat_item. Użyj LEFT JOIN lub NIE ISTNIEJE
- Znajdź wszystkie wiersze w mat_item, w których nie ma pasującego wiersza w mat_rel z 2. Użyj PRAWEGO POŁĄCZENIA lub NIE ISTNIEJE.
Znajdowanie zarówno 3, jak i 4:
- Użyj obu SQL z UNION ALL