Club Delphi  
    Paypal   FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > SQL
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 26-09-2007
Avatar de Alejandrina
Alejandrina Alejandrina is offline
Miembro
 
Registrado: mar 2007
Ubicación: Medellin
Posts: 46
Poder: 0
Alejandrina Va por buen camino
Question SQL Script Error (mas de un valor)

Hola, Explicare mi situación mas detalladamente. La subconculta me arroja los siguientes resultados por decir algo 95,100,100,62,100,93,62,25,75...
Ahora en ese mismo orden quiero actualizar el campo ResultadoCalifResp donde se cumpla que los campos resultadocalifresp=0 and resultadocalifhab=0 and totalevalu=0...mmm es algo como esto:

Cedula resultadoCaliCargo resultadocalifresp resultadocalifhab totalevalu
a 65 95 75 78
b 75 95 0 0
c 40 63 75 59
d 75 100 0 0
e 80 100 0 0

Estoy ejecutando esta consulta desde el Database Explorer.

Espero haberme hecho entender y que me puedan colaborar...Muchas gracias
__________________
Alejandrina
Responder Con Cita
  #2  
Antiguo 26-09-2007
Avatar de duilioisola
[duilioisola] duilioisola is offline
Miembro Premium
 
Registrado: ago 2007
Ubicación: Barcelona, España
Posts: 1.806
Poder: 22
duilioisola Es un diamante en brutoduilioisola Es un diamante en brutoduilioisola Es un diamante en bruto
En este caso, lo único que se me ocurre es hacer un procedimiento...
Código:
95,100,100,62,100,93,62,25,75...

a  65  95  75  78
b  75   0    0   0
c  40  63  75  59
d  75   0    0   0
e  80   0    0   0

pasa a -->

a  65  95  75  78
b  75  95   0   0
c  40  63  75  59
d  75 100   0   0
e  80 100   0   0
Código SQL [-]
procedure rellenar_resultadoevalu
as
declare variable cedula varchar(1); /*aqui debes poner lo que corresponda*/
declare variable temporal double precision; /*supongo que no es entero porque sale de una division*/
begin
   /*Recorro todos los resultados de la subconsulta y los meto en temporal*/
   for select select sum(cc.calificacion) / max(codigoresponsabilidad) as totalcaliresp
       from personal p 
       inner join  calificacionresponsabilidadjefe cc 
       on cc.cedula=p.cedula 
       group by cc.fechaevaluacion,p.cedula
   into :temporal do
   begin
      /*inicializo cedula como vacio*/
      cedula = '';
      /*selecciono lo primera cedula a actualizar*/
      /*tener en cuenta el orden*/
      select first cedula from resultadoevalu
      where resultadocalifresp=0 and resultadocalifhab=0 and totalevalu=0
      order by cedula
      into :cedula;
      /*Si encuentro una cedula que cumpla la condicion hago el update*/
      if (cedula <> '') then
         update resultadoevalu
         set resultadocalifresp=temporal
         where cedula=:cedula;
   end
end
y luego
Código SQL [-]
execute procedure rellenar_resultadoevalu;

Nota: Qué pasa con los valores que sobran en la subconsulta si no se encuentran suficientes registros que cumplan la condición en resultadoevalu?
95,100,100,62,100,93,62,25,75,...

Nota 2: En qué orden deben entrar los valores de la subconsulta en la tabla resultadoevalu?

Última edición por duilioisola fecha: 26-09-2007 a las 16:09:13.
Responder Con Cita
Respuesta


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
error, el índice o la clave principal no puede tener un valor null locorez Varios 3 15-12-2006 04:40:42
Cuantos <Script></Script> deben haber en un <Body>? Deiv HTML, Javascript y otros 9 07-12-2006 01:27:50
Error en OnCalcFields con valor retornado de un SELECT SUM() Cabanyaler Conexión con bases de datos 1 17-10-2006 11:44:22
Error pasando un valor a unDbgrid jandres Varios 1 17-06-2006 01:26:25
Error: El valor EOF o BOF es True o el actuañ registro de eliminó lavtaro Conexión con bases de datos 2 30-06-2003 11:39:44


La franja horaria es GMT +2. Ahora son las 03:37:06.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi