Jointure et filtrage secondaire vs. Attribut rapporté

Bonjour !

Je cherche très souvent à filtrer les données d’une table en fonction des valeurs d’un attribut d’une autre table, en suivant une colonne de référence.

La solution préconisée (?) serait d’intégrer le champ de filtrage à la table primaire, en tant que colonne rapportée.

Avec le temps, mes tables de données deviennent artificiellement larges, emplies d’attributs rapportés.

La logique relationnelle de grist est alors sensiblement mise à mal il me semble.

Est ce que ces colonnes sont effectivement dupliquées+synchronisées dans SQLite ? Auquel cas c’est une forme d’aberration.

Y a-t-il un autre moyen de réaliser ces (nombreuses) opérations de jointure+filtrage ?

Merci pour vos retours.

Bonjour, je vous conseille de chercher du côté des vues liées : une première vue (sur la donnée A) vous permet d’afficher le champ de filtrage et une seconde vue (sur la donnée B) affiche les enregistrements qui ont la valeur sélectionnée dans la première vue.

Je vous renvoie à la documentation pour plus d’infos :

https://support.getgrist.com/fr/linking-widgets/#liaison-par-filtre

Merci pour votre réponse (merci à retardement!).

Le mécanisme des vues liées s’appuie exclusivement sur les id’s il me semble. Donc il réalise des jointures dites « naturelles ». Par exemple, il permet d’afficher dynamiquement tous les employés d’un département, préalablement sélectionné dans la table Dpt. On suppose une colonne de référence Dpt pour chaque employé.

Ce que je cherche consisterait par exemple à afficher tous les employés d’un département (quelconque) hébergé dans le bâtiment B (attribut Dpt.Bât=« B »).

En relisant la doc des vues liées (merci pour le pointeur), je n’ai pas l’impression que je puisse y parvenir.

Bonjour, j’ai fait l’exercice et effectivement, ça ne marche qu’avec un champ rapporté :

Ca n’a pas l’air de coûter en SQLite car j’ai téléchargé le fichier Grist avec et sans ce champ rapporté : ils font la même taille.

Ca va coûter en calcul si le champ rapporté est un Lookup, mais pas (ou très peu) si la notation par points qui est utilisée (comme dans mon exemple – j’explique la différence ici) car ce n’est pas une formule qui parcourt toute la table mais qui consulte seulement les attributs de la ligne référencée.