Antwoord volgens opmerkingen over de vraag. Ik heb het uitgeprobeerd op een SQLite-database en aangezien de syntaxis misschien niet klopt in vergelijking met SQLServer, kan ik je alleen maar aanwijzingen geven. Ik heb geen link naar een database.
De basis vinden:
- Vind het mat_no, child-paar in mat_rel waar ouder IS NULL
- Zoek alle rijen in mat_rel die overeenkomen met mat_no en waar ouder overeenkomt met het kind van 1. Voeg de SQL van 1 toe in een JOIN-achtige (SELECT ..).
Mismatch vinden (vergelijk kind=kind en mat_no=mat_no):
- Zoek alle rijen van 2, waar er geen overeenkomende rij is in mat_item. Gebruik een LEFT JOIN of NOT EXISTS
- Zoek alle rijen in mat_item waar er geen overeenkomende rij is in mat_rel van 2. Gebruik een RIGHT JOIN of NOT EXISTS.
Zowel 3 als 4 vinden:
- Gebruik beide SQL's met UNION ALL