1. Odkaz na třídu či uživatele

    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. 

×