Vous n'êtes pas identifié(e).

#1 12/09/2011 16:18:25

baradji
Membre

overlaps sur des numeric

Salut,
je souhaite utiliser le principe de overlaps sur des nombres reals, mais apparemment, overlaps ne marche que sur les dates.
est ce que quelqu'un pourra me donner une indice pour resoudre ma requete ci-dessous?

SELECT (257.70::real , 283.20::real) OVERLAPS (min(met_from) , max(met_to) )
from meters WHERE met_hol_id = '7_GAR-09-02'


resultat:
ERROR: function pg_catalog.overlaps(real, real, real, real) does not exist
SQL state: 42883
Hint: No function matches the given name and argument types. You might need to add explicit type casts.


Merci

Hors ligne

#2 12/09/2011 16:38:31

kenrio
Membre

Re : overlaps sur des numeric

bonjour,

overlaps fonctionne que sur des dates, donc faut trouver un autre moyen de faire ce que tu veux, tu devrais être un peu plus loquace sur le but recherché ?

Hors ligne

#3 13/09/2011 16:24:23

baradji
Membre

Re : overlaps sur des numeric

voila, j'ai mis en place une fonction pour les overlaps sur les numeric avec valeur de retour un boolean. j'espere que cela va servir a d'autres

CREATE OR REPLACE FUNCTION "public"."func_overlap_hole" (varchar, numeric,numeric)
RETURNS BOOLEAN AS $$
DECLARE
mon_record BOOLEAN;
hole_id ALIAS FOR $1;
hole_start ALIAS FOR $2;
hole_end ALIAS FOR $3;
BEGIN
    SELECT
    CASE WHEN
        (
             ((SELECT min(met_from) from meters WHERE met_hol_id = hole_id) > hole_start)
              AND
              ((SELECT min(met_from) from meters WHERE met_hol_id = hole_id) >= hole_end)
        )
           OR
           (
            ((SELECT max(met_to) from meters WHERE met_hol_id = hole_id) ) <= hole_start
            AND
            ((SELECT max(met_to) from meters WHERE met_hol_id = hole_id) ) < hole_end
        )
    THEN TRUE
    ELSE FALSE END into mon_record;
    RETURN mon_record ;
END
$$
LANGUAGE 'plpgsql'
SECURITY DEFINER;

Hors ligne

Pied de page des forums