Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » Mysql »

Duda con una consulta Mysql

Estas en el tema de Duda con una consulta Mysql en el foro de Mysql en Foros del Web. Buenas. Tengo una tabla con alumnos, cursos y asignaturas, así: @import url("http://static.forosdelweb.com/clientscript/vbulletin_css/geshi.css"); Código SQL: Ver original CREATE TABLE IF NOT EXISTS `tbl_alumnos_curso` (   `alumno` ...
  #1 (permalink)  
Antiguo 30/09/2014, 11:47
 
Fecha de Ingreso: junio-2012
Mensajes: 147
Antigüedad: 11 años, 9 meses
Puntos: 1
Duda con una consulta Mysql

Buenas. Tengo una tabla con alumnos, cursos y asignaturas, así:

Código SQL:
Ver original
  1. CREATE TABLE IF NOT EXISTS `tbl_alumnos_curso` (
  2.   `alumno` INT(11) NOT NULL,
  3.   `curso` INT(11) NOT NULL,
  4.   `asignatura` VARCHAR(50) COLLATE utf8_spanish_ci NOT NULL,
  5.   PRIMARY KEY (`alumno`,`curso`,`asignatura`),
  6.   KEY `tbl_alumnos_curso_fk_2` (`curso`)
  7. ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_spanish_ci;

Necesito obtener todos los alumnos y el curso al que pertenecen que sólo tengan una asignatura específica. Por ejemplo, la consulta debe devolver al alumno 1 que pertenece al curso 1 y sólo tiene la asignatura "Historia", pero no debe devolver al alumno 2, que pertenece al curso 1 y tiene "Historia" y además "Matemáticas". No sé si me explico.

Podría hacerlo a lo bruto, con un count(*) por cada alumno, pero seguro que debe haber alguna forma más simple que no me obligue a realizar una consulta por cada alumno registrado en la tabla.

Muchas gracias de antemano!
  #2 (permalink)  
Antiguo 30/09/2014, 14:11
 
Fecha de Ingreso: julio-2012
Mensajes: 15
Antigüedad: 11 años, 9 meses
Puntos: 1
Respuesta: Duda con una consulta Mysql

Hola, prueba con:

select * from (
select count(*) as CantAsignaturas, alumno from tbl_alumnos_curso group by alumno
) as x where CantAsignaturas=1
  #3 (permalink)  
Antiguo 30/09/2014, 17:18
 
Fecha de Ingreso: junio-2012
Mensajes: 147
Antigüedad: 11 años, 9 meses
Puntos: 1
Respuesta: Duda con una consulta Mysql

Gracias por contestar! Funciona, pero falla en una pequeña cosa, necesito la lista de los alumnos que tienen una asignatura específica. Como decía en el primer mensaje, la consulta debe devolver al alumno 1 que pertenece al curso 1 y sólo tiene la asignatura "Historia", pero no debe devolver al alumno 2, que pertenece al curso 1 y tiene "Historia" y además "Matemáticas" o cualquier otra más.

He intentado añadir esa restricción pero la ponga donde la ponga no acaba de hacer lo que necesito.

Etiquetas: tabla
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 05:11.