[Qgis-user] relation reference filter

Kosza Antal kosza.antal at gmail.com
Fri Apr 25 01:36:26 PDT 2025


The settings are fine, the values work correctly in a dropdown list, what
doesn't work is the filtering based on the value selected in the previous
field.
It's as if current_value() doesn't return a value.


Vedran Stojnović <phidrho at gmail.com> ezt írta (időpont: 2025. ápr. 25., P,
8:43):

> Did you set up relational widgets properly?
>
> There is a good tutorial in the official docs:
>
> https://docs.qgis.org/3.40/en/docs/user_manual/working_with_vector/joins_relations.html#many-to-many-n-m-relations
>
> čet, 24. tra 2025. u 22:05 Kosza Antal via QGIS-User <
> qgis-user at lists.osgeo.org> napisao je:
>
>>
>> chris hermansen <clhermansen at gmail.com> ezt írta (időpont: 2025. ápr.
>> 24., Cs, 20:07):
>>
>>> Kosza and list,
>>>
>>> On Thu, Apr 24, 2025 at 3:34 AM Kosza Antal via QGIS-User <
>>> qgis-user at lists.osgeo.org> wrote:
>>>
>>>> Hello everyone,
>>>>
>>>> I want to implement the following in qgis
>>>>
>>>> Given 3 geopackage tables, one is the findings, the second is the type,
>>>> the third is the material, and the fourth is the findings_material. The
>>>> latter is a connecting table between the type and the material. The tables
>>>> refer to each other with foreign keys. The foreign key is of type uuid.
>>>>
>>>> The task: in qgis, the findings table needs to be edited, the findings
>>>> field refers to the type uuid with a foreign key, the material field refers
>>>> to the uuid key of the material table. qgis automatically recognizes the
>>>> relationships and sets up a relation reference widget.
>>>>
>>>> What I want: when I select the finding, i.e. the corresponding value
>>>> from the type table, in the material it should filter the values based on
>>>> the pivot table.
>>>> This is how it looks in sql.
>>>>
>>>> SELECT
>>>> a.uuid AS material_uuid,
>>>> a.values AS material_values
>>>> FROM
>>>> material AS a
>>>> JOIN
>>>> result_material AS pivot ON a.uuid = pivot.material_fk
>>>> WHERE
>>>> pivot.characteristic_fk = '6c5356d0-3257-49ed-8f95-4262d33175c9';
>>>>
>>>> Just wondering if you could create a view based on your SELECT
>>> statement that is editable (I've not done this in SQLite so I have no idea
>>> if it's possible).
>>>
>>> Looking at your SQL vs your description, I'm not following.  You say
>>> "the findings table needs to be edited"... Then it seems to me you need a
>>> SELECT statement like this:
>>>
>>> SELECT f.*,t.*,m.*
>>> FROM findings AS f
>>> JOIN type AS t ON f.type_uuid = t.uuid
>>> JOIN material AS m ON f.material_uuid = m.uuid
>>>
>>> I don't understand the purpose of the table you call "findings_material"
>>> in one place and "result_material" in another and which you say is "a
>>> connecting table between the type and the material".  It seems to me the
>>> findings table connects type and material (as per my SELECT statement).
>>> Are you using it to restrict the combinations of type and material?  If
>>> that's the case, then you should probably relate the findings table to that
>>> restricting table rather than type and material directly.  I would probably
>>> choose to call that restricting table something like
>>> "allowed_type_material" and have a field on findings that was called
>>> "allowed_type_material_uuid".
>>>
>>> Sorry that I'm not finding your problem description clear; I hope my
>>> comments don't add confusion.
>>>
>>>
>>>
>>> --
>>> Chris Hermansen · clhermansen "at" gmail "dot" com
>>>
>>> C'est ma façon de parler.
>>>
>>
>> Sorry, I really worded it confusingly, the table names are in Hungarian,
>> I overlooked something, let me clarify
>>
>> The main table is the findings, in which the "type" column is a foreign
>> key to the "uuid" column of the types table, the material column is a
>> foreign key to the "uuid" column of the material table
>> 1. table - findings
>> 2. table - types
>> 3. table - material
>> 4. table - findings material (connecting table), N:M relationship
>>
>> The sql query:
>>
>> SELECT
>> a.uuid AS material_uuid,
>> a.values AS material_value
>> FROM
>> material AS a
>> JOIN
>> findings_material AS pivot ON a.uuid = pivot.material_fk
>> WHERE
>> pivot.types_fk = '6c5356d0-3257-49ed-8f95-4262d33175c9';
>>
>> All this is being done for a qfield project,.
>>
>> I would like to solve the result of this sql query during data
>> collection, that is, I create a point with gps, select the type of the
>> find, and in the material column, only those values are displayed that are
>> assigned to this type in the connection table.
>> _______________________________________________
>> QGIS-User mailing list
>> QGIS-User at lists.osgeo.org
>> List info: https://lists.osgeo.org/mailman/listinfo/qgis-user
>> Unsubscribe: https://lists.osgeo.org/mailman/listinfo/qgis-user
>>
>
>
> --
> Srdačan pozdrav / Kind regards,
> Vedran Stojnović.
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.osgeo.org/pipermail/qgis-user/attachments/20250425/38be0a04/attachment.htm>


More information about the QGIS-User mailing list