Duda de SQL
Publicado por Javier (2 intervenciones) el 19/09/2007 23:46:20
Hola:
Espero que alguien me pueda ayudar.
Haber yo tengo un BD que la modifico usando SQL. Y tengo en la BD varias tablas que están formadas de la siguiente manera:
TABLA `usuario` tiene los campos:id,nombre,apellido1,apellido2`---> todas son claves primarias
TABLA `asignatura` tiene los campos: `nombre`, codigo--> siendo codigo clave primaria
TABLA `notas_isi`, notas_daa, notas_pl tiene los campos de :` id, calificacion`, nota, nombre, apellido1, apellido2---> siendo la claves primarias el id, nombre, apellido1, apellido2
TABLA `notas_mp` tiene los campos de :calificacion`, nota, nombre, apellido1, apellido2-->todas son claves primarias
TABLA `alumno_asignatura` tiene los campos: `alumno`,`asignatura`---> todas son claves primarias
El asignaturas cuyo codigo me interesa es ("23","37","25","35","41","44")
Entonces como tengo que hacer la consulta para obtener los alumnos que estén matriculados en más de dos asignaturas?????
Yo he hecho la consulta que pongo a continuación, pero no fucniona y no sé porqué.....
MUCHAS GRACIAS
SELECT `usuario`.`nombre`,`usuario`.`apellido1`,`usuario`.`apellido2`,`asignatura`.`nombre`,
`notas_isi`.`calificacion`,
`notas_mp`.`calificacion`
FROM `usuario`, `alumno_asignatura` ,`asignatura`,`notas_isi`,`notas_mp`
WHERE ((`usuario`.`id` = `alumno_asignatura`.`alumno`)
AND (`alumno_asignatura`.`asignatura` = `asignatura`.`codigo`)
AND (`asignatura`.`codigo`) IN ("23","37","25","35","41","44")
AND ((`usuario`.`id`= `notas_isi`.`id`)
OR (`usuario`.`id`= `notas_pl`.`id`)
OR (`usuario`.`id`= `notas_daa`.`id`)
OR (( `usuario`.`nombre` = `notas_mp`.`nombre`)
AND ( `usuario`.`apellido1` = `notas_mp`.`apellido1`)
AND ( `usuario`.`apellido2` = `notas_mp`.`apellido2`))))
GROUP BY `usuario`.`apellido1`,`asignatura`.`nombre`
HAVING COUNT(*)>1
Espero que alguien me pueda ayudar.
Haber yo tengo un BD que la modifico usando SQL. Y tengo en la BD varias tablas que están formadas de la siguiente manera:
TABLA `usuario` tiene los campos:id,nombre,apellido1,apellido2`---> todas son claves primarias
TABLA `asignatura` tiene los campos: `nombre`, codigo--> siendo codigo clave primaria
TABLA `notas_isi`, notas_daa, notas_pl tiene los campos de :` id, calificacion`, nota, nombre, apellido1, apellido2---> siendo la claves primarias el id, nombre, apellido1, apellido2
TABLA `notas_mp` tiene los campos de :calificacion`, nota, nombre, apellido1, apellido2-->todas son claves primarias
TABLA `alumno_asignatura` tiene los campos: `alumno`,`asignatura`---> todas son claves primarias
El asignaturas cuyo codigo me interesa es ("23","37","25","35","41","44")
Entonces como tengo que hacer la consulta para obtener los alumnos que estén matriculados en más de dos asignaturas?????
Yo he hecho la consulta que pongo a continuación, pero no fucniona y no sé porqué.....
MUCHAS GRACIAS
SELECT `usuario`.`nombre`,`usuario`.`apellido1`,`usuario`.`apellido2`,`asignatura`.`nombre`,
`notas_isi`.`calificacion`,
`notas_mp`.`calificacion`
FROM `usuario`, `alumno_asignatura` ,`asignatura`,`notas_isi`,`notas_mp`
WHERE ((`usuario`.`id` = `alumno_asignatura`.`alumno`)
AND (`alumno_asignatura`.`asignatura` = `asignatura`.`codigo`)
AND (`asignatura`.`codigo`) IN ("23","37","25","35","41","44")
AND ((`usuario`.`id`= `notas_isi`.`id`)
OR (`usuario`.`id`= `notas_pl`.`id`)
OR (`usuario`.`id`= `notas_daa`.`id`)
OR (( `usuario`.`nombre` = `notas_mp`.`nombre`)
AND ( `usuario`.`apellido1` = `notas_mp`.`apellido1`)
AND ( `usuario`.`apellido2` = `notas_mp`.`apellido2`))))
GROUP BY `usuario`.`apellido1`,`asignatura`.`nombre`
HAVING COUNT(*)>1
Valora esta pregunta


0