Répondez selon les commentaires sur la question. Je l'ai essayé sur une base de données SQLite, et comme la syntaxe peut être décalée par rapport à SQLServer, je ne peux que vous donner des indications. Je n'ai pas de lien vers une base de données.
Retrouver les bases :
- Trouvez la paire mat_no, enfant dans mat_rel où le parent EST NULL
- Trouvez toutes les lignes dans mat_rel qui correspondent au mat_no et où le parent correspond à l'enfant de 1. Ajoutez le SQL de 1. dans un JOIN comme (SELECT ..).
Recherche d'incompatibilité (en comparant child=child et mat_no=mat_no) :
- Trouvez toutes les lignes de 2, où il n'y a pas de ligne correspondante dans mat_item. Utilisez un LEFT JOIN ou NOT EXISTS
- Trouvez toutes les lignes dans mat_item où il n'y a pas de ligne correspondante dans mat_rel à partir de 2. Utilisez un RIGHT JOIN ou NOT EXISTS.
Trouver à la fois 3 et 4 :
- Utiliser les deux SQL avec UNION ALL