Antworten Sie gemäß den Kommentaren zur Frage. Ich habe es auf einer SQLite-Datenbank ausprobiert, und da die Syntax im Vergleich zu SQLServer möglicherweise abweicht, kann ich Ihnen nur Anweisungen geben. Ich habe keinen Link zu einer Datenbank.
Die Grundlagen finden:
- Suchen Sie das Paar mat_no, child in mat_rel, wobei parent NULL ist
- Finde alle Zeilen in mat_rel, die mit mat_no übereinstimmen und wo parent mit dem child von 1 übereinstimmt. Füge die SQL von 1. in einem JOIN wie (SELECT ..) hinzu.
Nichtübereinstimmung finden (Kind=Kind und mat_no=mat_no vergleichen):
- Finde alle Zeilen von 2, wo es keine übereinstimmende Zeile in mat_item gibt. Verwenden Sie einen LEFT JOIN oder NOT EXISTS
- Finde alle Zeilen in mat_item, wo es keine passende Zeile in mat_rel aus 2 gibt. Verwende einen RIGHT JOIN oder NOT EXISTS.
Sowohl 3 als auch 4 finden:
- Verwenden Sie beide SQLs mit UNION ALL