Consulta en SQL; Replace

Iniciado por astinx, 31 Octubre 2011, 17:28 PM

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

astinx

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!
La programación hoy en día es una carrera entre los ingenieros de software intentando construir mejores y más eficientes programas a prueba de idiotas y el Universo intentando producir mejores y más grandes idiotas. De momento, el Universo está ganando

fran800m

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,

astinx

Muchisimas gracias, tu respuesta me ayudo a la resolución del problema.
La programación hoy en día es una carrera entre los ingenieros de software intentando construir mejores y más eficientes programas a prueba de idiotas y el Universo intentando producir mejores y más grandes idiotas. De momento, el Universo está ganando