W większości przypadków nie ma konieczności łączenia zewnętrznych tabel. Podstawową potrzebą jest wyłącznie otrzymanie informacji o atrybutach zawartych w innych tabelach, a które mogą być skojarzone z obiektem na warstwie przez wspólny identyfikator.
W takim przypadku łatwo skonfigurować pole na formularzu i dynamicznie odczytywać dane z innych tabel. Proszę zwrócić uwagę, że napisałem w liczbie mnogiej - ‘tabel’. Ponieważ możemy tu wyświetlać relacje wielu wierszy do jednego obiektu na mapie, a w różnych polach, nawet różnych tabel.
A wszystko dzięki odpowiedniemu wyrażeniu...
Przykład
W moim przykładzie mamy warstwę poligonową z trzema obiektami. Obiekty mają unikalne pole id. Mam też tabelę (poniżej screen), która zawiera pole id poligonu oraz jego atrybut, np. kolor. Przyporządkowanych jest więcej niż jeden kolor do danego poligonu.
W formularzu warstwy poligonowej, tworzę pole tekstowe…
… i ustalam jego wartość na podstawie wyrażenia:
aggregate(
'data',
'concatenate',
"kolor",
"id" = attribute(@parent, 'id'),
', '
)
Rezultat
W rezultacie po kliknięciu na obiekt, w formularzu otrzymuję listę kolorów, powiązanych przez wspólne id z obiektem.
Jeśli zastosujemy tu funkcje związane z tablicami (array), to możemy dowolnie kształtować i filtrować podłączone treści. Trzeba też pamiętać, że zapytania jest dynamiczne. Przy wielkich zbiorach może chwilę trwać.