Select de dos campos "iguales"

miguel
30 de Agosto del 2004
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

manic
30 de Agosto del 2004
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.

fcp
30 de Agosto del 2004
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

Jianka
30 de Agosto del 2004
Podrias utilizar alias, pero segun veo los campos "descripcion_puesto_antiguo" y "descripcion_puesto_nuevo" no los tienes en las tablas

miguel
30 de Agosto del 2004
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

fcp
30 de Agosto del 2004
Prueba esto:

select *
from emp, puestos
where (emp.cod_puesto_actual = puestos.cod_puesto or
emp.cod_puesto_antiguo = cod_puesto)

miguel
30 de Agosto del 2004
Pues no, aparecen dos filas como resultado, no una sola fila con las dos descripciones como debería ser :(

Gracias de todos modos