SQL - Ayuda sentenciaaa

   
Vista:

Ayuda sentenciaaa

Publicado por Guille (1 intervención) el 01/03/2015 00:07:52
Buenas tardes compas! Estoy estudiando para una materia y surgio el siguiente ejercicio donde debo pasar las filas a columnas..

Alguno pueda darme una mano con esta sentencia?:

SELECT A.dni, A.nombre, examen, nota FROM notas N INNER JOIN alumnos A on A.dni = N.dni INNER JOIN materias M on M.materia = N.materia WHERE M.nombre = 'INTERFAZ GRAFICA'


Eso me tira la img que adjunte, pero lo que deberia hacer la sentencia es:
DNI-Nombre-Examen1-Examen2-Examen3-Examen4

Probe con:
SELECT A.dni, A.nombre, CASE N.examen WHEN N.examen = 1 then N.nota END as PrimerP, CASE N.examen WHEN N.examen = 2 then N.nota END as SegundoP, CASE N.examen WHEN N.examen = 3 then N.nota END as Recup, CASE N.examen WHEN N.examen = 4 then N.nota END as TP FROM notas N INNER JOIN alumnos A on A.dni = N.dni INNER JOIN materias M on M.materia = N.materia WHERE M.nombre = 'INTERFAZ GRAFICA'

Pero me tira la segunda img
sql
sql2

Adjunto la base de datos por si alguien la quiere
s
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

Ayuda sentenciaaa

Publicado por leonardo_josue (877 intervenciones) el 02/03/2015 17:15:39
Hola Guille:

Olvidaste mencionar algunos detalles que son importantes:

1. ¿con qué BD's estás trabajando? este dato es muy importante, pues aunque la mayoría de los DBMS's se basan en SQL, hay diferencias sintácticas muy significativas entre cada uno de ellos... por lo tanto no te podemos dar una respuesta puntual.

2. ¿Cómo es la estructura de tus tablas?... es decir, en tus consultas mencionas al menos tres tablas, pero no nos dices cómo es cada una de ellas ni nos dices cómo están relacionadas... el problema puede estar justamente en estas relaciones y no tanto con la consulta.

3. ¿Qué datos tiene cada una de tus tabla? esto va de la mano con la pregunta anterior, las imágenes muestran datos de salidas, pero no podemos determinar qué datos pertenecen a qué tablas.

Ahora bien... partiendo de la premisa de que lo que quieres hacer es cambiar renglones a columnas, esto lo puedes hacer de dos maneras: una sería tal como lo intentaste, con CASE-WHEN o puedes verificar si el motor que estás utilizando soporta la función PIVOT...

Tu idea no está tan equivocada, sin embargo, TIENES QUE AGRUPAR LOS REGISTROS... sin embargo, puedes tener problemas con valores NULL si no tienes cuidado, haz la prueba y nos comentas.

En realidad hay muchas formas de hacer esta consulta... con UNION's, con Subconsultas, con CASE-WHEN, con PIVOT... pero insisto, depende mucho de cómo tienes almacenada la información.

Saludos
Leo.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar