diff --git a/procedures/query/applyIDFilter.sql b/procedures/query/applyIDFilter.sql index 3b3a00a4753613d2dc90794cc5cfbbc55f86aa65..f35d5cdaf8da2353956e7d541cc4378391d7f49c 100644 --- a/procedures/query/applyIDFilter.sql +++ b/procedures/query/applyIDFilter.sql @@ -54,19 +54,28 @@ CREATE PROCEDURE db_5_0.applyIDFilter(in sourceSet VARCHAR(255), in targetSet VA IDFILTER_LABEL: BEGIN DECLARE data VARCHAR(20000) DEFAULT NULL; DECLARE aggVal VARCHAR(255) DEFAULT NULL; +DECLARE direction CHAR(4) DEFAULT NULL; #-- get aggVal if possible IF agg IS NOT NULL THEN IF versioned THEN -- TODO versioned queries SELECT 1 FROM id_agg_with_versioning_not_implemented; + ELSEIF agg = "max" THEN + SET direction = "DESC"; + ELSEIF agg = "min" THEN + SET direction = "ASC "; + ELSE + SELECT 1 FROM unknown_agg_parameter; END IF; + SET @stmtIDAggValStr = CONCAT( - "SELECT ", - agg, - "(id) INTO @sAggVal FROM `", + "SELECT e.internal_id INTO @sAggVal FROM `", sourceSet, - "`"); + "` AS s LEFT JOIN entity_ids AS e ON (s.id=e.internal_id) WHERE s.id>99 ORDER BY CAST(e.id AS UNSIGNED INT) ", + direction, + " LIMIT 1"); + PREPARE stmtIDAggVal FROM @stmtIDAggValStr; EXECUTE stmtIDAggVal; DEALLOCATE PREPARE stmtIDAggVal;