Opět se obracím na radu s "Kusovníkem". Databáze se pomalu plní a vyvstal problém v ní hledat podle určitého kriteria. Nejprve popíši současný stav:
Databáze obsahuje 2 tabulky. První tabulka - "Vykresy" - každý záznam obsahuje data pro jeden daný výkres - ID, Název, Číslo, Autor, Datum .... Druhá tabulka "Kusovnik" obsahuje vazby mezi výkresy - každý záznam má pouze 3 položky - ID, IDSes, IDDet. IDSes odpovídá nějakému konkrétnímu ID z tabulky "Vykresy" a určuje, že tento výkres je sestavou a rozpadá se na několik dalších položek. IDDet odpovídá také nějakému konkrétnímu ID z tabulky "Vykresy" (je jiné než IDSes daného záznamu) a určuje, který jiný výkres ze všech výkresů je podsestava k nadřazenému výkresu.
Z uvedeného je zřejmé, že v IDDet se může vyskytovat číslo (výkres), který je podřízený nějaké vyšší sestavě, ale toto číslo se v jiném záznamu může vyskytovat také v IDSes - tedy je to také sestava, která napadá do jiné vyšší sestavy. Naopak se může vyskytovat číslo ID v tabulce "Vykresy", které v tabulce "Kusovník" není vůbec nikde uvedeno - tedy tento výkres ještě nebyl v Kusovníku zpracován.
Potřebuji sestavit 3 nezávislé dotazy, které budou kombinovat data z tabulek "Vykresy" a "Kusovnik" a vypíší buďto všechny sestavy, nebo všechny detaily, nebo všechny nezpracované výkresy.
a) Všechny sestavy - to je jasné - vše, co se vyskytuje v IDSes - tento dotaz je triviální
b) Všechny detaily - vše, co JE v IDDet(Kusovnik) ale SOUČASNĚ NENÍ také v nějakém jiném záznamu IDSes(Kusovnik) - Metodou pokus-omyl jsem nakonec sestavil dotaz, který snad funguje (SELECT "Kusovnik"."IDDet" FROM "Kusovnik" AS "Kusovnik_1", "Kusovnik" WHERE "Kusovnik_1"."IDDet" = "Kusovnik"."IDSes" GROUP BY "Kusovnik"."IDDet")
c) Všechny nezařazené - vše, co se vyskytuje v ID(Vykresy), ale současně se nevyskytuje ani v IDSes(Kusovnik) ani v IDDet(Kusovnik) - to vím, ale nejsem schopen tento dotaz správně formulovat :-(
Na závěr uvedu příklad:
ID(Vykresy) = 1,2,3,4,5,6
Kusovnik = (1,2),(1,4),(2,3),(2,4)
Tedy dotaz Sestava vypíše 1,2, dotaz Detail vypíše 3,4 a dotaz Nezarazene vypíše 5,6
Díky za radu
Editoval hdplot (6. 10. 2015 10:26:33)