You are on page 1of 5

CONSULTAS MULTITABLA

1. Realizar una consulta de todas las materias de la carrera de Ingeniera en Informtica ( N ) recuperando:

Clave de materia,
Nombre de la materia,
Crditos de la materia,
Semestre de la materia y ordenarlos por semestre

SELECT U_APRENDIZAJE.CVE_UAP, NOMBRE_U_AP, CREDITOS_UAP, PERIODO_UAP


FROM U_APRENDIZAJE INNER JOIN U_APRENDIZAJE_CARRERA ON U_APRENDIZAJE.CVE_UAP = U_APRENDIZAJE_CARRERA.CVE_UAP
WHERE CVE_CARRERA = 'N'
ORDER BY PERIODO_UAP
/* El siguiente es un ejemplo para usar alias o sustitucin de nombres mas cortos o amigables */
SELECT U_A.CVE_UAP AS C_U, NOMBRE_U_AP, CREDITOS_UAP, PERIODO_UAP AS P_U
FROM U_APRENDIZAJE AS U_A INNER JOIN U_APRENDIZAJE_CARRERA AS U_A_C ON U_A.CVE_UAP = U_A_C.CVE_UAP
WHERE CVE_CARRERA = 'N'
ORDER BY P_U

2. Realizar una consulta para tener todas las Unidades de Aprendizaje de la 4NV71 e incluir:

Clave de la Unidades de Aprendizaje,


Nombre de la Unidades de Aprendizaje,
Nombre del profesor

SELECT U_APRENDIZAJE.CVE_UAP, NOMBRE_U_AP, NOMBRE_PROFESOR


FROM U_APRENDIZAJE INNER JOIN GRUPO ON U_APRENDIZAJE.CVE_UAP = GRUPO.CVE_UAP
INNER JOIN PROFESOR ON GRUPO.NO_PROFESOR = PROFESOR.NO_PROFESOR
WHERE GRUPO.CVE_SECUENCIA = '4NV71'
3. Realizar una consulta para conocer todos los grupos que tienen la Unidades de Aprendizaje N456 C304 e incluir:

Clave de secuencia,
Nombre de Unidad de Aprendizaje
Nombre del profesor,
Da,
Hora de inicio de clases,
Hora de fin de clases An cuando no tengan asignados da y hora de clase

SELECT GRUPO.CVE_SECUENCIA, NOMBRE_U_AP, NOMBRE_PROFESOR, DIA, HORA_INICIO, HORA_FIN


FROM PROFESOR INNER JOIN GRUPO ON PROFESOR.NO_PROFESOR = GRUPO.NO_PROFESOR
INNER JOIN U_APRENDIZAJE ON GRUPO.CVE_UAP = U_APRENDIZAJE.CVE_UAP
LEFT OUTER JOIN HORARIO ON GRUPO.CVE_UAP = HORARIO.CVE_UAP AND
GRUPO.CVE_SECUENCIA = HORARIO.CVE_SECUENCIA
WHERE GRUPO.CVE_UAP = 'C304' OR GRUPO.CVE_UAP = 'N456'

4. Realizar una consulta para conocer tus calificaciones del primer departamental (CONDICIN CON TU NOMBRE), e incluir:

Clave de la Unidades de Aprendizaje,


Nombre de la Unidades de Aprendizaje,
Calificacin de la Unidades de Aprendizaje y ordenar por semestre

SELECT CALIFICACIONES_SEMESTRE.CVE_UAP, NOMBRE_U_AP, PRIMER_DEP


FROM ALUMNO INNER JOIN CALIFICACIONES_SEMESTRE ON ALUMNO.BOLETA = CALIFICACIONES_SEMESTRE.BOLETA
INNER JOIN U_APRENDIZAJE ON CALIFICACIONES_SEMESTRE.CVE_UAP = U_APRENDIZAJE.CVE_UAP
INNER JOIN U_APRENDIZAJE_CARRERA ON U_APRENDIZAJE.CVE_UAP = U_APRENDIZAJE_CARRERA.CVE_UAP
WHERE NOMBRE_ALUMNO = 'NATALIA WENDY SOCORRO FLORES LAGUNA'
ORDER BY PERIODO_UAP

5. Realizar una consulta de los grupos que no tienen asignado ningn saln con todas las columnas de tablas que se tengan que relacionar

SELECT *
FROM GRUPO LEFT OUTER JOIN HORARIO ON GRUPO.CVE_SECUENCIA = HORARIO.CVE_SECUENCIA AND
GRUPO.CVE_UAP = HORARIO.CVE_UAP
WHERE CVE_SALON_LAB IS NULL
6. Realizar una consulta de los grupos que no tienen asignado ningn saln ni profesor, con todas las columnas de tablas que se tengan que relacionar

SELECT *
FROM GRUPO LEFT OUTER JOIN HORARIO ON
GRUPO.CVE_SECUENCIA = HORARIO.CVE_SECUENCIA AND
GRUPO.CVE_UAP = HORARIO.CVE_UAP
WHERE CVE_SALON_LAB IS NULL AND NO_PROFESOR IS NULL

7. Realizar una consulta de las Unidades de Aprendizaje que estas cursando (usar condicin con tu nombre) e incluir:
Nombre del alumno, nombre de la UAP, y el nombre del profesor y la academia a la que corresponde ese profesor.

SELECT NOMBRE_ALUMNO, NOMBRE_U_AP, NOMBRE_PROFESOR, ACADEMIAS

FROM ALUMNO INNER JOIN CALIFICACIONES_SEMESTRE ON ALUMNO.BOLETA = CALIFICACIONES_SEMESTRE.BOLETA


INNER JOIN GRUPO ON CALIFICACIONES_SEMESTRE.CVE_SECUENCIA = GRUPO.CVE_SECUENCIA AND
CALIFICACIONES_SEMESTRE.CVE_UAP = GRUPO.CVE_UAP
INNER JOIN PROFESOR ON GRUPO.NO_PROFESOR = PROFESOR.NO_PROFESOR
INNER JOIN U_APRENDIZAJE ON GRUPO.CVE_UAP = U_APRENDIZAJE.CVE_UAP
WHERE NOMBRE_ALUMNO = 'NATALIA WENDY SOCORRO FLORES LAGUNA'

8. Realizar una consulta para obtener nombre de profesor , Unidades de Aprendizaje y secuencia, e incluir tambin los grupos que no tienen profesor asignado, en el siguiente orden:

Clave de la Unidades de Aprendizaje,


Clave de la secuencia,
Nombre del profesor

SELECT U_APRENDIZAJE.CVE_UAP, CVE_SECUENCIA, NOMBRE_PROFESOR


FROM GRUPO INNER JOIN U_APRENDIZAJE ON GRUPO.CVE_UAP = U_APRENDIZAJE.CVE_UAP
LEFT OUTER JOIN PROFESOR ON GRUPO.NO_PROFESOR = PROFESOR.NO_PROFESOR

9. Realizar una consulta para reunir la siguiente informacin del alumno con numero de boleta Tu boleta

Boleta del alumno,


Nombre del alumno,
Clave de la Unidades de Aprendizaje,
Nombre de la Unidades de Aprendizaje,
Nombre del profesor,
Clave del salon,
Da de clases,
Hora de inicio de clases,
Hora de fin de clases An cuando no tengan saln, da y hora de clase, ni profesor asignado
SELECT ALUMNO.BOLETA, NOMBRE_ALUMNO, CALIFICACIONES_SEMESTRE.CVE_UAP, NOMBRE_U_AP,
NOMBRE_PROFESOR, CVE_SALON_LAB, DIA, HORA_INICIO, HORA_FIN
FROM ALUMNO INNER JOIN CALIFICACIONES_SEMESTRE ON ALUMNO.BOLETA = CALIFICACIONES_SEMESTRE.BOLETA
INNER JOIN GRUPO ON GRUPO.CVE_SECUENCIA = CALIFICACIONES_SEMESTRE.CVE_SECUENCIA AND
GRUPO.CVE_UAP = CALIFICACIONES_SEMESTRE.CVE_UAP
INNER JOIN U_APRENDIZAJE ON GRUPO.CVE_UAP = U_APRENDIZAJE.CVE_UAP
LEFT OUTER JOIN PROFESOR ON GRUPO.NO_PROFESOR = PROFESOR.NO_PROFESOR
LEFT OUTER JOIN HORARIO ON GRUPO.CVE_SECUENCIA = HORARIO.CVE_SECUENCIA AND
GRUPO.CVE_UAP = HORARIO.CVE_UAP
WHERE ALUMNO.BOLETA = '2015600670'

10. Realizar consuLta con BOLETA, NOMBRE_ALUMNO, CVE_SECUENCIA y el nmero de Unidades de Aprendizaje inscritas por CVE_SECUENCIA por ALUMNO

SELECT DISTINCT ALUMNO.BOLETA, NOMBRE_ALUMNO, CVE_SECUENCIA, COUNT(CVE_SECUENCIA) 'UAP INSCRITAS'


FROM ALUMNO LEFT OUTER JOIN CALIFICACIONES_SEMESTRE ON ALUMNO.BOLETA = CALIFICACIONES_SEMESTRE.BOLETA
GROUP BY ALUMNO.BOLETA,NOMBRE_ALUMNO, CVE_SECUENCIA
ORDER BY NOMBRE_ALUMNO

11. Realizar consuLta con BOLETA, NOMBRE_ALUMNO, nmero de SECUENCIAS inscritas y Unidades de Aprendizajes inscritas por ALUMNO y solo para los alumnos que tengan mas
de 5 materias inscritas

SELECT ALUMNO.BOLETA, NOMBRE_ALUMNO,


COUNT(DISTINCT CVE_SECUENCIA) 'SEC INSCRITAS',
COUNT(DISTINCT CVE_UAP) 'UAPs INSCRITAS'
FROM ALUMNO LEFT OUTER JOIN CALIFICACIONES_SEMESTRE ON ALUMNO.BOLETA = CALIFICACIONES_SEMESTRE.BOLETA
GROUP BY ALUMNO.BOLETA, NOMBRE_ALUMNO HAVING COUNT(DISTINCT CVE_UAP) >= 5
ORDER BY NOMBRE_ALUMNO

12. Ahora las dos ultimas prenguntas pero condicionadas a renglones con tu nmero de boleta.

SELECT DISTINCT ALUMNO.BOLETA, NOMBRE_ALUMNO, CVE_SECUENCIA, COUNT(CVE_SECUENCIA) 'UAP INSCRITAS'


FROM ALUMNO LEFT OUTER JOIN CALIFICACIONES_SEMESTRE ON ALUMNO.BOLETA = CALIFICACIONES_SEMESTRE.BOLETA
WHERE ALUMNO.BOLETA = '2015600670'
GROUP BY ALUMNO.BOLETA,NOMBRE_ALUMNO, CVE_SECUENCIA
ORDER BY NOMBRE_ALUMNO

SELECT ALUMNO.BOLETA, NOMBRE_ALUMNO,


COUNT(DISTINCT CVE_SECUENCIA) 'SEC INSCRITAS',
COUNT(DISTINCT CVE_UAP) 'UAPs INSCRITAS'
FROM ALUMNO LEFT OUTER JOIN CALIFICACIONES_SEMESTRE ON ALUMNO.BOLETA = CALIFICACIONES_SEMESTRE.BOLETA
WHERE ALUMNO.BOLETA = '2015600670'
GROUP BY ALUMNO.BOLETA, NOMBRE_ALUMNO HAVING COUNT(DISTINCT CVE_UAP) >= 5
ORDER BY NOMBRE_ALUMNO
13. Actualizar calificaciones de CALIFICACIONES_SEMESTRE para que ningn rengln asociado a tu boleta tenga NULOS en las columnas de las calificaciones del primer, segundo y tercer
departamental y posteriormente pasar datos de renglones asociados a tu boleta con el promedio de los 3 departamentales como calificacion a HISTORIAL_ALUMNO con todas las columnas
requeridas de esa tabla.

/*

No se puede realizar una suma si existen valores nulos en columnas que son parte de una suma en un SELECT, por eso si aplica hay que realizar una actualizacin
por rengln si dejaste valores nulos.
Se tiene que identificar BOLETA, CVE_SECUENCIA y CVE_UAP especificas dando valores para PRIMER_DEP, SEGUNDO_DEP y TERCER_DEP en cada rengln/columna
que tenga valores.

UPDATE CALIFICACIONES_SEMESTRE
SET PRIMER_DEP = 6, SEGUNDO_DEP = 7, TERCER_DEP = 0
WHERE BOLETA = '2015600670' AND CVE_SECUENCIA = '3CM52' AND CVE_UAP = 'C304'

Despues ejecutar la siguiente instruccin INSERT a partir de una consulta con un SELECT

*/

INSERT INTO HISTORIAL_ALUMNO (BOLETA, CVE_SECUENCIA_H, CVE_UAP_H, CVE_PERIODO, CALIFICACION_HISTORIAL)

SELECT BOLETA,CALIFICACIONES_SEMESTRE.CVE_SECUENCIA,CALIFICACIONES_SEMESTRE.CVE_UAP,CVE_PERIODO,
(PRIMER_DEP+SEGUNDO_DEP+TERCER_DEP)/3
FROM CALIFICACIONES_SEMESTRE INNER JOIN GRUPO ON CALIFICACIONES_SEMESTRE.CVE_SECUENCIA = GRUPO.CVE_SECUENCIA AND
CALIFICACIONES_SEMESTRE.CVE_UAP = GRUPO.CVE_UAP
WHERE CALIFICACIONES_SEMESTRE.BOLETA = '2015600670'

14. Realizar una consulta para conocer el historial de calificaciones del alumno TU NOMBRE e incluir:

TU NOMBRE,
Clave de la Unidades de Aprendizaje,
Nombre de la Unidades de Aprendizaje,
Calificacin de la Unidades de Aprendizaje,
Clave del periodo y ordenar por semestre

SELECT 'NATALIA WENDY SOCORRO FLORES LAGUNA ',U_APRENDIZAJE.CVE_UAP, NOMBRE_U_AP, CALIFICACION_HISTORIAL,


CVE_PERIODO

FROM HISTORIAL_ALUMNO INNER JOIN U_APRENDIZAJE ON HISTORIAL_ALUMNO.CVE_UAP_H = U_APRENDIZAJE.CVE_UAP


INNER JOIN ALUMNO ON HISTORIAL_ALUMNO.BOLETA = ALUMNO.BOLETA
INNER JOIN U_APRENDIZAJE_CARRERA ON U_APRENDIZAJE.CVE_UAP = U_APRENDIZAJE_CARRERA.CVE_UAP
WHERE NOMBRE_ALUMNO = 'NATALIA WENDY SOCORRO FLORES LAGUNA'
ORDER BY PERIODO_UAP

You might also like