Article: AN0001879Updated: 03.11.2021
Při použití zvláštního zápisu lze v dotazu přímo vytvořit sloupec typu Odkaz na třídu. Tímto sloupcem získáte možnost provázat data z dotazu na detail záznamu ve třídě.
Pokud máme např. třídu projektů odkazujících se ve sloupci primary_goal na třídu goal a ve sloupci project manager na uživatele ObjectGears, můžeme vytvořit přehled záznamů, kde primární cíl bude fungovat jako odkaz na detail daného záznamu a projektový manager jako odkaz na stránku PersonQuickInfo daného uživatele.
Odkazy na jeden záznam
Příklad: Třída project odkazující se na třídu cílů a interní třídu uživatelů ObjectGears.
Entity relationship diagram:
SQL dotaz:
SELECT pr.name, g.id AS Goal___goal, p.id AS Project_manager___person
FROM {{:class.project:}} pr
LEFT JOIN {{:class.goal:}} g ON pr.primary_goal = g.id
LEFT JOIN person p ON pr.project_manager = p.id
Za požadovaným kódem (a zároveň názvem) sloupce uvedeme tři znaky podtržítka a kód třídy, do níž má být odkaz směrován.
Pokud by se odkazovaná třída 'goal' nacházela v jiném modelu, je třeba v odkazu uvést i kód modelu a oddělit ho od kódu třídy dvojtečkou.
SELECT pr.name, g.id AS [Goal___modelcode:goal], p.id AS Project_manager___person
Výsledný přehled záznamů:
Místo id záznamů se v přehledu zobrazí Krátký popis odkazovaného záznamu, resp. Celé jméno uživatele ObjectGears.
Odkazy na více záznamů
V případě, že sloupce ve třídách obsahují odkazy na více záznamů, je třeba použít mírně odlišnou syntaxi.
Příklad: Třída Approval process odkazující se na interní třídu uživatelů ObjectGears a na třídu Company. Na třídu Approval process se odkazuje třída Catalogue request. Všechny zmíněné vztahy jsou typu odkaz na více záznamů.
Entity relationship diagram:
Data ve třídě Approval process vypadají takto:
Sloupce třídy Approval obsahují násobný odkaz na uživatele, násobný odkaz na jinou třídu, opačný násobný odkaz z jiné třídy (jiná třída se odkazuje na data naší třídy).
Vytvoříme tento SQL dotaz:
SELECT ap.id,
ap.name,
ap.id AS approvers___approval_process___approvers,
ap.id AS company___approval_process___applicable_for,
ap.id AS process___approval_process___cl_approval_process
FROM {{:class.approval_process:}} ap
Všechny odkazované záznamy ve sloupcích typu odkaz na více záznamů nejsou uloženy přímo ve třídě ap (approval_process), ale v asociačních tabulkách, které jsme si popsali ve článku Dotazy na sloupce s vícenásobnými odkazy. V těchto asociačních třídách identifikujeme odpovídající záznamy pomocí identifikátorů ap.id. Sloupec asociační třídy obsahující příslušné odkazy do cílových tříd je pak určen druhým a třetím elementem řetězci aliasu (odkazující se třída a sloupec odkazující se třídy). První element opět určuje požadovaný název a kód sloupce dotazu, který se má vytvořit.
Výsledný přehled záznamů v dotazu pak vypadá takto:
V detailu dotazu pak můžeme nastavit řazení záznamů, způsob zobrazení násobných odkazů atd.