Responda de acordo com os comentários da pergunta. Eu tentei em um banco de dados SQLite e, como a sintaxe pode estar desativada em comparação com o SQLServer, só posso fornecer instruções. Eu não tenho um link para um banco de dados.
Encontrando o básico:
- Encontre o mat_no, par filho em mat_rel onde pai É NULO
- Encontre todas as linhas em mat_rel que correspondam a mat_no e onde pai corresponda ao filho de 1. Adicione o SQL de 1. em um JOIN como (SELECT ..).
Encontrando incompatibilidade (comparando child=child e mat_no=mat_no):
- Encontre todas as linhas de 2, onde não há linha correspondente em mat_item. Use LEFT JOIN ou NOT EXISTS
- Encontre todas as linhas em mat_item onde não há linha correspondente em mat_rel de 2. Use um RIGHT JOIN ou NOT EXISTS.
Encontrando 3 e 4:
- Use ambos os SQLs com UNION ALL