Manejo de parámetros SQL IS NULL en Geoserver
Estoy creando una capa SQL a partir de una base de datos de postgres en geoserver utilizando una consulta y aplicando estilo a la misma.
Quiero crear dos capas basadas en el parámetro pasado a ellas, actualmente estoy manejando esto creando dos capas SQL separadas.
Primera capa:
SELECT
activity_group_id, activity_name, application_status_code,
village_code, geom
FROM
dbt.dbt_point_primary
WHERE
village_code = '%vinCode%'
AND attributes = '%attribute%'
AND application_status_code = %statusCode%
Segunda capa:
SELECT
activity_group_id, activity_name, application_status_code,
village_code, geom
FROM
dbt.dbt_point_primary
WHERE
village_code = '%vinCode%'
AND attributes = '%attribute%'
AND application_status_code = %statusCode%
AND activity_group_id = %activity_group_id%
Al acceder a esta capa a través de la función getMap, estoy pasando los viewParams:
&viewparams=vinCode:546748;statusCode:1;attribute:Farmer
y
&viewparams=vinCode:546748;statusCode:1;activity_group_id:19;attribute:Farmer
Mi preocupación aquí es que en lugar de crear 2 capas separadas para la misma capa esperada, ¿puedo manejar esto en solo 1 capa SQL utilizando la función ISNULL
en la capa SQL?
¿Alguien tiene alguna fuente para compartir?
davy.ai
Sí, puede manejar esto utilizando la función
ISNULL
en la capa SQL. En lugar de crear dos capas SQL separadas, puede modificar la consulta de la capa SQL existente utilizando la siguiente consulta:En la consulta anterior,
ISNULL
se reemplaza conOR %activity_group_id% IS NULL
para manejar el caso en el queactivity_group_id
no se pasa como unviewParam
. En este caso, devolverá todos losactivity_group_id
.Esta consulta modificada manejará ambos casos y le dará los resultados deseados.
En cuanto a la fuente, puede consultar la documentación oficial de GeoServer y los recursos disponibles en línea para la creación de capas SQL y la optimización de consultas.