Foro de elhacker.net

Programación => Desarrollo Web => Mensaje iniciado por: astinx en 31 Octubre 2011, 17:28 pm



Título: Consulta en SQL; Replace
Publicado por: astinx en 31 Octubre 2011, 17:28 pm
Hola, tengo problemas realizando la siguiente consulta:

"Listar el DNI, Apellido, Nombre, Género y Fecha de nacimiento de los alumnos y profesores de la institución detallando por cada uno que rol cumple, alumno o profesor. Además, el género se debe proyectar de forma que se lea 'femenino' o 'masculino' y no 'F' o 'M'. Dicho listado deberá estar ordenado por nombre y apellido"

Tablas
PERSONA = (DNI, Apellido, Nombre, Fecha_Nacimiento, Estado_Civil, Genero)
ALUMNO = (DNI, Legajo, Año_Ingreso)
PROFESOR = (DNI, Matricula, Nro_Expediente)
TITULO = (Cod_Titulo, Nombre, Descripción)
TITULO-PROFESOR = (Cod_Titulo, DNI, Fecha)
CURSO = (Cod_Curso, Nombre, Descripción, Fecha_Creacion, Duracion)
ALUMNO-CURSO = (DNI, Cod_Curso, Año, Desempeño, Calificación)
PROFESOR-CURSO = (DNI, Cod_Curso, Fecha_Desde, Fecha_Hasta)

Mi duda es la siguiente:

Creo que hay que usar un replace para el tema de renombrar los campos con el criterio de si en el atributo genero dice "masculino", lo cambio por "M", ¿Pero como lo puedo aplicar para ambos casos en una sola consulta? , es decir, por lo que he leído la función replace recibe los parámetros como replace(nombre_atributo,'string a buscar','lo reemplazo por').

Otra cosa es que me pide detallar si es alumno o profesor, supongo que para eso tendría que agregar un atributo "tipo", supongase, que diga "alumno" o "profesor", pero también no se me ocurre como lograrlo en una sola consulta.

Luego lo demás como los INNER JOIN, y el ORDER BY para el ultimo inciso es fácil.

Cualquier detalle que me puedan decir es de gran utilidad.

Desde ya muchas gracias por detenerse a leer. Saludos!


Título: Re: Consulta en SQL; Replace
Publicado por: fran800m en 31 Octubre 2011, 20:21 pm
Citar
¿Pero como lo puedo aplicar para ambos casos en una sola consulta?

Usa case when en la select

select case when genero = 'masculino' then 'm' else 'f'

no te hace falta el replace en este caso, aunque podias hacer un replace anidado

replace(replace(Genero, 'masculino', 'm'), 'femenino', 'f')

para este caso te recomiendo case when

Un abrazo,


Título: Re: Consulta en SQL; Replace
Publicado por: astinx en 2 Noviembre 2011, 02:02 am
Muchisimas gracias, tu respuesta me ayudo a la resolución del problema.