Select de dos campos "iguales"
Muy buenas.
Ya sé que es un poco extraño el título. Os lo explico:
Tengo las tablas:
EMP
----
cod_emp
cod_puesto_actual
cod_puesto_antiguo
PUESTOS
------------
cod_puesto
descripcion
Quería sacar una vista con la siguiente información:
cod_emp descripcion_puesto_antiguo descripcion_puesto_nuevo
Para obtener las descripciones, debo acceder a la tabla PUESTOS con dos códigos distintos. No consigo elaborar la select. ¿Podríais ayudarme?
Muchas gracias.
Miguel
Ya sé que es un poco extraño el título. Os lo explico:
Tengo las tablas:
EMP
----
cod_emp
cod_puesto_actual
cod_puesto_antiguo
PUESTOS
------------
cod_puesto
descripcion
Quería sacar una vista con la siguiente información:
cod_emp descripcion_puesto_antiguo descripcion_puesto_nuevo
Para obtener las descripciones, debo acceder a la tabla PUESTOS con dos códigos distintos. No consigo elaborar la select. ¿Podríais ayudarme?
Muchas gracias.
Miguel
La select que soluciona tu problema es esta:
SELECT E.COD_EMP, P1.DESCRIPCION, P2.DESCRIPCION
FROM EMPLEADOS E, PUESTOS P1, PUESTOS P2
WHERE E.COD_PUESTO_ANTIGUO = P1.COD_PUESTO
AND E.COD_PUESTO_NUEVO = P2.COD_PUESTO
Esto te devolvera codigo_empleado, descripcion puesto antiguo, descripcion puesto nuevo, por ese orden.
SELECT E.COD_EMP, P1.DESCRIPCION, P2.DESCRIPCION
FROM EMPLEADOS E, PUESTOS P1, PUESTOS P2
WHERE E.COD_PUESTO_ANTIGUO = P1.COD_PUESTO
AND E.COD_PUESTO_NUEVO = P2.COD_PUESTO
Esto te devolvera codigo_empleado, descripcion puesto antiguo, descripcion puesto nuevo, por ese orden.
creo que ya te he entendido, prueba esto:
select p1.descripcion, p2.descripcion
from emp, puestos p1, puestos p2
where emp.cod_puesto_actual = p1.cod_puesto
emp.cod_puesto_antiguo = p2.cod_puesto
Mandamé un correo de si era eso lo que querias o era otra cosa
select p1.descripcion, p2.descripcion
from emp, puestos p1, puestos p2
where emp.cod_puesto_actual = p1.cod_puesto
emp.cod_puesto_antiguo = p2.cod_puesto
Mandamé un correo de si era eso lo que querias o era otra cosa
Podrias utilizar alias, pero segun veo los campos "descripcion_puesto_antiguo" y "descripcion_puesto_nuevo" no los tienes en las tablas
los campos descripcion_puesto_nuevo y descripcion_puesto_antiguo son el mismo campo descripcion de la tabla PUESTOS, uno será para el código de puesto nuevo y otro para el código de puesto antiguo de la tabla EMP. Ése es el problema que se me plantea.
Saludos
Saludos
Prueba esto:
select *
from emp, puestos
where (emp.cod_puesto_actual = puestos.cod_puesto or
emp.cod_puesto_antiguo = cod_puesto)
select *
from emp, puestos
where (emp.cod_puesto_actual = puestos.cod_puesto or
emp.cod_puesto_antiguo = cod_puesto)
