Ver Mensaje Individual
  #3 (permalink)  
Antiguo 10/08/2013, 11:04
HeijiKun
 
Fecha de Ingreso: agosto-2013
Mensajes: 8
Antigüedad: 11 años, 3 meses
Puntos: 0
Respuesta: Evitar repeticiones en tablas.

Si, me gustaría evitarlo ya que la solución sería ver solamente uno.

El enunciado del ejercicio es el siguiente:

- Nombre y apellidos de parejas de profesores cuya diferencia de antigüedad (en valor absoluto) sea inferior a dos años y pertenezcan al mismo departamento.
Muestre la antigüedad de cada uno de ellos en años.

Y mi solución actual es:

select p1.nombre, p1.apellido1, p1.apellido2, TRUNC(months_between(sysdate, p1.antiguedad)/12) as antiguedad_p1,
p2.nombre, p2.apellido1, p2.apellido2, TRUNC(months_between(sysdate, p2.antiguedad)/12) as antiguedad_p2

from profesores p1, profesores p2

where abs(months_between(sysdate, p1.antiguedad)/12-(months_between(sysdate, p2.antiguedad))/12) < 2
AND p1.departamento = p2.departamento
AND p1.nrp != p2.nrp;

nrp es un valor numérico único, asi evito que salga Juan 2 Juan 2 (por ejemplo).