Processing math: 100%

2 votos

Filtrar un cuadro de selección de relación de valores con una expresión cuando una columna tiene cadena LIKE la otra Columna

Oke he configurado dos relaciones de valor entre una capa de polígono y dos tablas, esto es para hacer posible la selección de múltiples valores. La primera relación de valor no es realmente tan importante que acaba de tener un varios selección de valores que está siendo el código principal. Nota xy son marcadores de posición, por razones de privacidad no puedo publicar estos códigos.

Por ejemplo:

Código principal: xy1, xy2, xy3, xy4

Edición: 22/05/2020

Nuevo detalle añadido: Estos son parte de una lista de selección múltiple. Así que un Objeto puede tener xy1 y xy2 por ejemplo.

La segunda relación de valores es que básicamente se tiene el código principal, un subcódigo y un código completado que se compone de una fusión del código principal y el subcódigo. Por ejemplo :

  • Código principal: xy1
  • Subcódigo : f
  • Código completado: xy1f

Este código completado es el que se está seleccionando pero por supuesto quiero que esta selección se filtre en base al código principal. Tal vez se pregunte "¿por qué no utilizar otra columna que contenga el subcódigo y continuar a partir de ahí? Esto se debe a que el subcódigo no siempre aparece en todos los códigos principales.

Edición 22/05/2020: La selección del subcódigo también es de opción múltiple. Por ejemplo, xy1 tiene los subcódigos a y b, pero xy4 no tiene el subcódigo b.

Example image

El problema es que no sé exactamente cómo hacer referencia a la propia capa poligonal en la calculadora de campo. Por no hablar ya que tiene múltiples valores que se seleccionan en esa columna por lo que tipo de sé que tiene que un comando LIKE 'maincode capa de polígonos', pero hasta ahora sólo puedo hacer referencia a la tabla no la tabla de capa de polígonos.

3voto

she_weeds Puntos 126

Sí, la función de formulario en cascada está disponible desde QGIS 3.2 pero pasado preguntas nunca se han explayado mucho sobre esto, así que si no has podido seguir el vídeo en el enlace anterior del registro de cambios de QGIS, a continuación te explicamos cómo funciona.

Supongamos que tiene dos tablas, main_code y sub_codes como a continuación. main_code sólo tiene los valores principales y sub_codes tiene una entrada para cada combinación de código principal y secundario.

enter image description here

Ahora vaya a Propiedades > Formularios para su capa de polígonos, que tiene un campo para el código principal ( main_poly ) y un campo para el código completado ( comp_poly ).

Establezca una relación de valores para su main_poly utilizando el main_code valores de la tabla.

enter image description here

Establezca ahora una relación de valores para comp_poly .

Desea que los valores sean los completed columna de sub_codes así que selecciónela como columna de valor clave.

Sin embargo, si desea que los valores disponibles se filtren por el campo maincodes si coincide con el valor actual de main_poly en el elemento digitalizado.

Esto se puede describir con la siguiente expresión:

"maincode"=current_value('main_poly')

O, si su sub_codes tabla sólo tiene un completed y desea utilizar una expresión LIKE,

"completed" ilike current_value('main_poly')||'%'

enter image description here

Resultado:

enter image description here


Si desea hacer coincidir varias selecciones, esto es mucho más fácil si tiene una función maincode columna en su sub_codes mesa.

Utiliza la siguiente expresión:

current_value('main_poly') ilike '%'||"maincode"||'%' 

Resultado:

enter image description here

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X