[RESUELTO]¿Cómo puedo seleccionar 2 veces el mismo campo por diferente criterio?

Iniciado por |Miguel|, 7 Enero 2012, 16:40 PM

0 Miembros y 1 Visitante están viendo este tema.

|Miguel|

Veamos... a ver si me podéis echar un cablecillo...
Dada la siguiente tabla:


Necesito armar una consulta que me diga el requisito de cada uno de los cursos. El Número del requisito es el código de otro de los cursos que están en esa misma tabla. Ahora mismo tengo lo siguiente:
Código (sql) [Seleccionar]
SELECT NOMBRE, REQUISITO
FROM CURSO;

Y devuelve:
Cita de: 'Oracle'NOMBRE   REQUISITO
NINGUNO   0
ESO   0
ESI   1
DAI   2
ASIR   2
BACHILLER   2
ADMINISTRACIÓN   1
FINANZAS   5
COMERCIO   1
MARKETING   7
CONSTRUCCIÓN   5
EDIFICACIÓN   5

¿Cómo hago para sacar el nombre del requisito en lugar del código?

Muchas gracias a todos.

HdM

Buenas.

Dentro de la consulta, deberías agregar una segunda vez la tabla 'curso' con un alias. Así podrías seleccionar campos o montar condiciones, subconsultas..., como si se tratase de una tabla diferente.

La consulta podría quedarte así:
Código (sql) [Seleccionar]
SELECT curso.Nombre,curso_requisito.Nombre
FROM curso INNER JOIN curso AS curso_requisito ON curso.requisito = curso_requisito.codigo


En este ejemplo, la segunda referencia a la tabla 'curso' se hace con el alias 'curso_requisito'

Creo que esto es lo que andabas buscando.

Un saludo.

- Nice to see you again -

|Miguel|

Lo primero, gracias Bulld0z3r..
Cita de: Bulld0z3r en  7 Enero 2012, 17:15 PM
Código (sql) [Seleccionar]
SELECT curso.Nombre,curso_requisito.Nombre
FROM curso INNER JOIN curso AS curso_requisito ON curso.requisito = curso_requisito.codigo

Me da el error:
Cita de: OracleORA-00905: falta una palabra clave

PD: antes se me olvidó mencionar que estoy usando ORACLE...



EDITO: Sabía que teóricamente era algo de combinación (join) y que necesitaba alias, gracias a tu sentencia Bulld0z3r he podido darle una vuelta y adaptarla a Oracle y los nombres exactos de mis tablas y campos... la consulta correcta es esta en mi caso:

Código (sql) [Seleccionar]
SELECT CU.NOMBRE, C.NOMBRE
FROM CURSO CU, CURSO C
WHERE CU.ID_CURSO=C.REQUISITO AND CU.NOMBRE!='NINGUNO';


PD: la segunda condición del WHERE es por los datos que hay en mi BBDD, no me interesa que en los resultados salga ese en concreto.

Muchas gracias compi, tema resuelto.

HdM

Buenas de nuevo.

En Oracle parece ser que AS, sólo se utiliza para alias en campos. Para tablas no se usa, de modo que quita el AS (deja un espacio entre el nombre real de la tabla y el nombre que das al alias) y prueba.

Un saludo.

- Nice to see you again -

|Miguel|

Jeje nos hemos contestado a la vez.. es exactamente lo que dices.

Copio otra vez la consulta por si alguien la necesita que esté a mano... y gracias de nuevo.

Código (sql) [Seleccionar]
SELECT CU.NOMBRE, C.NOMBRE
FROM CURSO CU, CURSO C
WHERE CU.ID_CURSO=C.REQUISITO AND CU.NOMBRE!='NINGUNO';