First, I think you can replace layer ids with layer names from your QGIS
project legend :
'BATIMENT_TERRAIN_ROLE_MARS_2020_46364fcb_8628_404d_9ca6_0ab713170ceb'
-> 'BATIMENT TERRAIL ROLE MARS 2020' (if that is the name of the layer
in your QGIS project legend)
However, this is risky, because the expression will fail in case you
change the layer name in the legend.
Second, since you want to compare multiple fields, you can compute the
related feature (with get_feature) only once and then store it into a
variable 'feat', thanks to the function with_variable(). You can then
reference this variable with @feat. You can also use array comparison
instead of a long string of AND. Something like this :
with_variable(
'feat',
get_feature('BATIMENT_TERRAIN_ROLE_MARS_2020_46364fcb_8628_404d_9ca6_0ab713170ceb',
'Matricule', "Matricule"),
array(attribute(@feat, 'Aqueduc'), attribute(@feat, 'Sanitaire'),
attribute(@feat, 'Batiment')) = array('O', 'O', 'O')
)
Le 29/05/2020 à 15:02, Patrick St-Hilaire a écrit :
Hi Yann
Thank you very much, everything works fine, but is it possible to
simplify the query when we want to involve several fields? Here is an
example that works well where I replicate the request to achieve my
ends, but I can't simplify it. Perhaps it is not possible, but if so it
would be good. Thank you
attribute
(get_feature('BATIMENT_TERRAIN_ROLE_MARS_2020_46364fcb_8628_404d_9ca6_0ab713170ceb',
'Matricule', "Matricule"), 'Aqueduc')= 'O' AND attribute
(get_feature('BATIMENT_TERRAIN_ROLE_MARS_2020_46364fcb_8628_404d_9ca6_0ab713170ceb',
'Matricule', "Matricule"), 'Sanitaire')= 'O' AND attribute
(get_feature('BATIMENT_TERRAIN_ROLE_MARS_2020_46364fcb_8628_404d_9ca6_0ab713170ceb',
'Matricule', "Matricule"), 'Batiment')= 'O'
Le jeu. 28 mai 2020 à 16:25, Yann Voté <[email protected]
<mailto:[email protected]>> a écrit :
Hi,
You can try the direct but implicit represent_value() function, if the
filtering is by the referenced column, like this:
represent_value("referencing_field") =
'filter_value_on_referenced_layer'
Or you can try the more verbose and more explicit
attribute()/get_feature() functions, if you want to filter by another
column:
attribute(get_feature('referenced_layer_name', 'referenced_field',
"referencing_field"), 'filter_field') = 'filter_value'
And be careful about quotes: 'foo' (single quotes) is a string (but may
designates a field in other layer in some functiones), while "foo"
(double quotes) designates a field in the active layer.
Hope this helps!
Yann
Le 28/05/2020 à 19:11, Patrick St-Hilaire a écrit :
> Hi !
>
> Could someone tell me how to query a layer from fields of another
layer
> using select by expression? I have already created a relationship
> between my two layers in projects.
>
> Thank you
>
> Patrick
>
> _______________________________________________
> Qgis-user mailing list
> [email protected] <mailto:[email protected]>
> List info: https://lists.osgeo.org/mailman/listinfo/qgis-user
> Unsubscribe: https://lists.osgeo.org/mailman/listinfo/qgis-user
>
_______________________________________________
Qgis-user mailing list
[email protected] <mailto:[email protected]>
List info: https://lists.osgeo.org/mailman/listinfo/qgis-user
Unsubscribe: https://lists.osgeo.org/mailman/listinfo/qgis-user
_______________________________________________
Qgis-user mailing list
[email protected]
List info: https://lists.osgeo.org/mailman/listinfo/qgis-user
Unsubscribe: https://lists.osgeo.org/mailman/listinfo/qgis-user