Svar i henhold til kommentarer til spørgsmålet. Jeg prøvede det på en SQLite-database, og da syntaksen kan være slået fra i forhold til SQLServer, kan jeg kun give dig anvisninger. Jeg har ikke et link til en database.
Sådan finder du det grundlæggende:
- Find mat_no, underordnet par i mat_rel, hvor forælder ER NULL
- Find alle rækker i mat_rel, der matcher mat_no, og hvor overordnet matcher barnet fra 1. Tilføj SQL fra 1. i et JOIN-like (SELECT ..).
Finder mismatch (sammenligning af child=child og mat_no=mat_no):
- Find alle rækker fra 2, hvor der ikke er nogen matchende række i mat_item. Brug en LEFT JOIN eller EKSISTERER IKKE
- Find alle rækker i mat_item, hvor der ikke er nogen matchende række i mat_rel fra 2. Brug en RIGHT JOIN eller IKKE FINDER.
Finder både 3 og 4:
- Brug begge SQL'er med UNION ALL