Foro de elhacker.net

Programación => Bases de Datos => Mensaje iniciado por: |Miguel| en 7 Enero 2012, 16:40 pm



Título: [RESUELTO]¿Cómo puedo seleccionar 2 veces el mismo campo por diferente criterio?
Publicado por: |Miguel| en 7 Enero 2012, 16:40 pm
Veamos... a ver si me podéis echar un cablecillo...
Dada la siguiente tabla:

(http://s2.subirimagenes.com/imagen/previo/thump_7306626sin-ttulo.png)

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
  1. SELECT NOMBRE, REQUISITO
  2. 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.


Título: Re: ¿Cómo puedo seleccionar 2 veces el mismo campo por diferente criterio?
Publicado por: HdM en 7 Enero 2012, 17:15 pm
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
  1. SELECT curso.Nombre,curso_requisito.Nombre
  2. 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.


Título: Re: ¿Cómo puedo seleccionar 2 veces el mismo campo por diferente criterio?
Publicado por: |Miguel| en 7 Enero 2012, 17:20 pm
Lo primero, gracias Bulld0z3r..
Código
  1. SELECT curso.Nombre,curso_requisito.Nombre
  2. FROM curso INNER JOIN curso AS curso_requisito ON curso.requisito = curso_requisito.codigo
Me da el error:
Cita de: Oracle
ORA-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
  1. SELECT CU.NOMBRE, C.NOMBRE
  2. FROM CURSO CU, CURSO C
  3. 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.


Título: Re: ¿Cómo puedo seleccionar 2 veces el mismo campo por diferente criterio?
Publicado por: HdM en 7 Enero 2012, 17:28 pm
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.


Título: Re: ¿Cómo puedo seleccionar 2 veces el mismo campo por diferente criterio?
Publicado por: |Miguel| en 7 Enero 2012, 17:30 pm
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
  1. SELECT CU.NOMBRE, C.NOMBRE
  2. FROM CURSO CU, CURSO C
  3. WHERE CU.ID_CURSO=C.REQUISITO AND CU.NOMBRE!='NINGUNO';