Ver Mensaje Individual
  #1 (permalink)  
Antiguo 18/05/2010, 10:08
dconsolidado
 
Fecha de Ingreso: noviembre-2008
Mensajes: 38
Antigüedad: 16 años
Puntos: 2
Información Ayuda con Funcion para crear texto a pasar

Hola amigos, tengo un problema y necesito su ayuda.

El problema es el siguiente:

tengo la siguiente consulta:

Código MySQL:
Ver original
  1. SELECT co_observacion,
  2.        de_observacion,
  3.        (select count(1)
  4.                from IDORRCC.rctr_dig_nacimiento_subobs a
  5.                where a.co_observacion = j.co_observacion
  6.                AND a.co_estacion = j.co_estacion
  7.                AND a.es_subobservacion = '1'
  8.                /**/
  9.                ) as TOTALDETALLE
  10.   FROM IDORRCC.rctr_dig_nacimiento_obs j
  11.           FROM IDORRCC.rctr_dig_nacimiento_obs    a,
  12.                IDORRCC.rctr_dig_nacimiento_subobs b,
  13.                IDORRCC.rctr_lin_estacion          c
  14.          WHERE b.co_estacion = 30
  15.            AND b.es_subobservacion = '1'
  16.            AND J.CO_OBSERVACION = b.co_observacion
  17.            AND a.co_observacion = b.co_observacion
  18.            AND a.co_estacion = b.co_estacion
  19.            AND a.co_estacion = c.co_estacion
  20.            /**/
  21.            )
  22.    AND j.co_estacion = 30
  23.    AND j.es_observacion = '1'
  24.  ORDER BY j.co_observacion

y debo agregarle en donde estan los /**/, lo siguiente:

Código MySQL:
Ver original
  1. AND NOT  ((j.co_observacion=00 and a.co_subobservacion in (01,02,03,05,06,09,10))
  2.  (j.co_observacion=01 and a.co_subobservacion in (01,05))
  3.   (j.co_observacion=01 and a.co_subobservacion in (01,05)))

desde Javascript. La idea es pasarselo como parametro desde javascript y agregarlo a la consulta para que quede de la siguiente forma... creo que es obvio..


Código MySQL:
Ver original
  1. SELECT co_observacion,
  2.        de_observacion,
  3.        (select count(1)
  4.                from IDORRCC.rctr_dig_nacimiento_subobs a
  5.                where a.co_observacion = j.co_observacion
  6.                AND a.co_estacion = j.co_estacion
  7.                AND a.es_subobservacion = '1'
  8.                /*AND NOT
  9.            ((j.co_observacion=00 and a.co_subobservacion in (01,02,03,05,06,09,10)) or
  10.             (j.co_observacion=01 and a.co_subobservacion in (01,05)))*/
  11.                ) as TOTALDETALLE
  12.   FROM IDORRCC.rctr_dig_nacimiento_obs j
  13.           FROM IDORRCC.rctr_dig_nacimiento_obs    a,
  14.                IDORRCC.rctr_dig_nacimiento_subobs b,
  15.                IDORRCC.rctr_lin_estacion          c
  16.          WHERE b.co_estacion = 30
  17.            AND b.es_subobservacion = '1'
  18.            AND J.CO_OBSERVACION = b.co_observacion
  19.            AND a.co_observacion = b.co_observacion
  20.            AND a.co_estacion = b.co_estacion
  21.            AND a.co_estacion = c.co_estacion
  22.            /*AND NOT
  23.            ((a.co_observacion=00 and b.co_subobservacion in (01,02,03,05,06,09,10)) or
  24.             (a.co_observacion=01 and b.co_subobservacion in (01,05)))*/
  25.            )
  26.    AND j.co_estacion = 30
  27.    AND j.es_observacion = '1'
  28.  ORDER BY j.co_observacion


claro que

Código MySQL:
Ver original
  1. AND NOT  ((j.co_observacion=00 and a.co_subobservacion in (01,02,03,05,06,09,10))
  2.  (j.co_observacion=01 and a.co_subobservacion in (01,05))
  3.   (j.co_observacion=01 and a.co_subobservacion in (01,05)))

puede crecer y ser algo como:

Código MySQL:
Ver original
  1. AND NOT  ((j.co_observacion=00 and a.co_subobservacion in (01,02,03,05,06,09,10))
  2.  (j.co_observacion=01 and a.co_subobservacion in (01,05))
  3.   (j.co_observacion=02 and a.co_subobservacion in (01,05))
  4.  
  5.   (j.co_observacion=03 and a.co_subobservacion in (01,05))
  6.  
  7.   (j.co_observacion=04 and a.co_subobservacion in (01,05))
  8.  
  9. ....
  10. )

y asi sucesivamente...

lo curioso de este caso es que los valores los sacaria de una lista donde pongo mis codigos y sub codigos para pasarlo, pero ahi esta el problema... ¿como le hago para que pueda obtener una lista de la forma que quiero, como explico, lineas arriba?

la lista contiene por ejemplo:

30:01:01
30:01:02
30:01:03
30:02:04
30:02:03
30:05:01
30:01:06


A ver si alguien me puede dar una mano...

Hasta donde voy, solo recojo los valores de la lista y los leo.. pero ahi me quede..

Código Javascript:
Ver original
  1. if (objListaTemp.options.length > 0){
  2.                 for(i=0; i < objListaTemp.options.length; i++){
  3.                    list[i] = objListaTemp.options[i].value;
  4.                    varCodObs = list[i].substr(3,2);
  5.                    /*Debe existir una funcion que busque el valor en la lista*/
  6.                    if (varCodObsAux == varCodObs) {
  7.                        /*Coge el valor de la sub observacion y lo agrega a la variable con ","*/
  8.                    }else{
  9.                         var x=0;
  10.                             objList[x] = varCodObs;
  11.                             x++;
  12.                        /*crea un a nueva fila con el codigo de la observacion*/
  13.                    }
  14.                    
  15.                 }
  16.          }

una de las ideas era pasarlo asi...

texto + 01 +" " + texto + 01,02,03,05 + var;
texto + 02 +" " + texto + 02 03 05 + var;

donde texto = "AND NOT ((j.co_observacion="

etc.



Deantemano... Gracias por su ayuda.

Última edición por dconsolidado; 18/05/2010 a las 10:25