Odpovězte podle komentářů k otázce. Vyzkoušel jsem to na databázi SQLite, a protože syntaxe může být ve srovnání s SQLServerem vypnutá, mohu vám poskytnout pouze pokyny. Nemám odkaz na databázi.
Nalezení základů:
- Najděte pár mat_no, potomek v mat_rel, kde rodič je NULL
- Najděte všechny řádky v mat_rel, které odpovídají mat_no a kde rodič odpovídá potomkovi z 1. Přidejte SQL z 1. do JOIN jako (SELECT ..).
Nalezení neshody (porovnání dítě=dítě a mat_no=podložka_ne):
- Najděte všechny řádky od 2, kde v mat_item není žádný odpovídající řádek. Použijte LEFT JOIN nebo NOT EXISTS
- Najděte všechny řádky v mat_item, kde není žádný odpovídající řádek v mat_rel z 2. Použijte RIGHT JOIN nebo NOT EXISTS.
Nalezení 3 i 4:
- Použijte oba SQL s UNION ALL