Článek: AN0001879Aktualizováno:: 15.04.2025
Při použití zvláštního zápisu lze v dotazu přímo vytvořit sloupec typu Odkaz na třídu. Takovýto dotaz je pak možné použít v master-detail relaci dané třídy a provázat data z dotazu na detail záznamu ve třídě.
Ve sloupci odkazujícím na jednu třídu můžeme mít více situací, které si vyžadují odlišnou syntaxi.
- Jednoduchý odkaz na třídu nebo uživatele
- Násobný odkaz na třídu nebo uživatele
- Opačný odkaz (jiná třída se odkazuje na naši třídu, v níž se automaticky vytvoří opačný odkaz)
Vše i ukážeme na modelovém příladu.
Entity-relationship diagram
Typy závislostí ukazuje následující diagram.

Třída combinations se odkazuje na třídy v levé části diagramu a na tabulku person (v diagramu není zobrazená). Za názvem sloupců ve třídě combinations je uvedeno, zda se jedná o sloupec typu odkazy na více záznamů, zda je odkazovaná třída v jiném modelu nebo zda odkaz směřuje na tabulku person.
V pravé části diagramu jsou třídy, které se naopak odkazují na třídu combinations. V takovém případě dojde k automatickému vytvoření opačných odkazů (virtuálních sloupců) ve třídě combinations, které lze také použít v dotazu. Zobrazí se v nich záznamy odkazující na třídu combinations. Tyto virtuální sloupce jsou ze své podstaty násobnými odkazy na více záznamů.
Přehled sloupců ve třídě.

Data ve třídě pak vypadají následovně. Dva krajní sloupce jsou virtuální (opačné odkazy) a zobrazují hodnoty nacházející se ve třídách cases a tests, které se odkazují na daný záznam.

Odkazy na záznamy v dotazu
V dotazech můžeme tato data zobrazit tak, že v něm vzniknou sloupce typu odkaz na záznam.
SQL dotaz:
SELECT co.id,
co.name,
/*single record referencing*/
co.applicable_for_country AS applicable_for_country___countries,
co.default_plant AS [default_plant___basic:plants],
co.owner AS own___person,
/*multiple records referencing*/
co.id AS cust___combinations___applicable_for_customers,
co.id AS appr___combinations___approvers,
co.id AS case___combinations___cl_combinations,
co.id AS testing___combinations___cl_combinations_2,
co.id AS plant___combinations___preferred_plants
FROM {{:class.combinations:}} co
Odkaz na jeden záznam
V první části SQL dotazu jsou tři sloupce vybírající data ze sloupců odkazujících se na jednu hodnotu. Uvedeme daný sloupec (např. co.applicable_for_country) za klíčovým slovem AS námi zvolený prefix kódu sloupce dotazu, který má vzniknout (např. applicable_for_country), pak tři podtržítka a kód třídy, na níž se odkazujeme. Pokud se tato třída nachází v jiném modelu, musíme dát celý řetězec za klíčovým slovem AS do hranatých závorek a před kód třídy přidat ještě kód modelu s dvojtečkou jako oddělovačem (např. co.default_plant AS [default_plant___basic:plants]).
Odkaz na více záznamů
V druhé části SQL dotazu jsou odkazy na více záznamů. Mají vždy stejnou strukturu, ať už se nacházají v jiném modelu, jde o odkaz na tabulku person nebo opačné odkazy. Uvádíme vždy id záznamu, z kterého nebo na který odkazy vedou, klíčové slovo AS a za ním zvolený prefix kódu sloupce dotazu, který má vzniknout, pak tři podtržítka a kód třídy, do níž má odkaz směřovat a kód sloupce dané třídy, v němž se záznamy nacházejí.
Výsledný přehled záznamů v dotazu pak vypadá takto. Můžeme si ověřit, že odpovídá hodnotám ze třídy.

Pokud zobrazíme sloupce dotazu, vidíme, že jsou skutečně typu Odkaz do jiné třídy.

V detailu dotazu pak můžeme nastavit řazení záznamů, způsob zobrazení násobných odkazů atd.