SQL - resta entre edades calculadas en dos cursores

 
Vista:

resta entre edades calculadas en dos cursores

Publicado por Julieth (3 intervenciones) el 05/03/2016 07:05:03
Debo realizar una resta de unas edades calculadas en dos cursores, ya que en uno de los cursores calculo la edad de 5 mujeres y en el otro calculo la edad de 2 hombres; entonces debo restar la edad de cada mujer con la edad de cada hombre y mostrar todos los resultados en pantalla. Intenté realizarlo mediante un ciclo for pero solo logro que me imprima la resta entre una sola mujer y un solo hombre, y me imprime esta misma resta diez veces.


1
2
3
4
5
6
7
8
9
FOR r_diferencias IN c_empF  LOOP
      FOR r_diferencias In c_empM LOOP
 
      nuevaEdad := ABS(edadF - edadM);
      dbms_output.put_line('La Resta entre = '  ||  ' '  ||  rec_empF.nombre  ||  ' '  ||  ' y '  ||  ' '
                          ||  rec_empM.nombre  ||  ' '  ||  ' es '  ||  ' '  ||  nuevaEdad);
 
      END LOOP;
END LOOP;
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Jordi

resta entre edades calculadas en dos cursores

Publicado por Jordi (10 intervenciones) el 05/03/2016 14:48:42
Hola Julieth,

¿Podrías explicarte un poco mejor?
¿Tienes que mostrar todas las combinaciones de restas?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

resta entre edades calculadas en dos cursores

Publicado por Julieth (3 intervenciones) el 06/03/2016 04:14:15
Hola,

si exacto, necesito mostrar las combinaciones de restas, teniendo en cuenta la resta debe ser unicamente entre la edad de un hombre con la edad de una mujer, por eso hay dos cursores, uno para cada genero donde en cada uno de ellos se calcula la edad de todas las personas encontradas en ese genero. En total son 7 personas, de las cuales 5 son mujeres y 2 son hombres, por lo cual todas las combinaciones posibles daria un total de 10 restas.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Jordi

resta entre edades calculadas en dos cursores

Publicado por Jordi (10 intervenciones) el 06/03/2016 09:54:20
Entonces el problema es que estás usando mal los for.
¿De dónde recoges edadF y edadM?

1
2
3
4
5
6
7
FOR puntero_mujer IN c_empF LOOP
     FOR puntero_hombre In c_empM LOOP
          nuevaEdad := ABS(puntero_mujer - puntero_hombre);
          dbms_output.put_line('La Resta entre = ' || ' ' || rec_empF.nombre || ' ' || ' y ' || ' '
          || rec_empM.nombre || ' ' || ' es ' || ' ' || nuevaEdad);
     END LOOP;
END LOOP;

En caso de que puntero_mujer y puntero_hombre (que son los punteros de la iteración, es decir, la posición actual) sean registros que contienen la columna edad:

1
2
3
4
5
6
7
FOR puntero_mujer IN c_empF LOOP
     FOR puntero_hombre In c_empM LOOP
          nuevaEdad := ABS(puntero_mujer.edad - puntero_hombre.edad);
          dbms_output.put_line('La Resta entre = ' || ' ' || rec_empF.nombre || ' ' || ' y ' || ' '
          || rec_empM.nombre || ' ' || ' es ' || ' ' || nuevaEdad);
     END LOOP;
END LOOP;
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar

resta entre edades calculadas en dos cursores

Publicado por Julieth (3 intervenciones) el 07/03/2016 05:52:59
Hola Jordi,

Muchas gracias, ya corregí los for con tu ayuda, resulta que si los estaba usando mal en la parte de puntero_ mujer y hombre tal como dijiste, de nuevo Gracias por la ayuda

Julieth
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar