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

Como hacer union entre dos SELECT de la misma tabla

Estas en el tema de Como hacer union entre dos SELECT de la misma tabla en el foro de Mysql en Foros del Web. Buenas tardes, tengo una duda sobre una consulta SELECT: "Consulta que muestre el nombre del alumno y el nombre de la provincia de todos aquellos ...
  #1 (permalink)  
Antiguo 30/10/2014, 10:40
 
Fecha de Ingreso: octubre-2014
Mensajes: 4
Antigüedad: 10 años, 1 mes
Puntos: 0
Exclamación Como hacer union entre dos SELECT de la misma tabla

Buenas tardes,

tengo una duda sobre una consulta SELECT:

"Consulta que muestre el nombre del alumno y el nombre de la provincia de todos aquellos alumnos que hayan suspendido TODOS los exámenes a los que se han presentado"

EL problema viene cuando tengo que coger los que hayan suspendido TODOS los examenes. Tengo una tabla EXAMENES(id,id_asignatura,nota,id_alumno).
Mi idea era hacer un SELECT con el numero de examenes que ha hecho cada alumno y ver si aparece las mismas veces en otro SELECT que saque el numero de examenes suspensos.(No se si me explico)

Aqui va una idea de lo que tengo pero que evidentemente no funciona:

Código SQL:
Ver original
  1. SELECT * FROM `examenes` WHERE ( SELECT COUNT(id_alumno)
  2. FROM `examenes` GROUP BY id_alumno) = SELECT COUNT(id_alumno) FROM `examenes` WHERE nota<5)


Me urge porque es para una entrevista de trabajo
Muchisimas gracias de antemano!

Última edición por gnzsoloyo; 30/10/2014 a las 11:25
  #2 (permalink)  
Antiguo 30/10/2014, 13:58
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Cáceres
Mensajes: 3.735
Antigüedad: 16 años, 8 meses
Puntos: 300
Respuesta: Como hacer union entre dos SELECT de la misma tabla

Yo lo haría al revés. Buscaría los que han aprobado algún examen y luego mediante LEFT JOIN, SELECT ... NOT IN o NOT EXISTS... sacaría los otros, los que no están en ese conjunto. Imagino que cuentas con una tabla alumnos. Entiendo que solo hay un examen por asignatura.
Código MySQL:
Ver original
  1. SELECT a.id_alumno FROM alumnos a LEFT JOIN (SELECT id_alumno FROM examenes WHERE nota > 4.99)t1 ON .id_alumno = t1.id_alumno WHERE t1.idalumno IS NULL

Con esa o con alguna otra menos eficiente, como esta otra, también obtendrías aquellos que no han aprobado ninguna asignatura.
Código MySQL:
Ver original
  1. SELECT a.id_alumno FROM alumnos a WHERE a.id_alumno NOT IN (SELECT id_alumno FROM examenes WHERE nota > 4.99)

y también puede hacerse con NOT EXISTS. Mira ejs. aquí:
http://stackoverflow.com/questions/9...ere-not-exists

No basta con que te lo digamos. Debes comprobarlo con datos.

Luego tendrías que traerte, claro, la provincia de cada uno de esos alumnos.

Última edición por jurena; 31/10/2014 a las 01:07
  #3 (permalink)  
Antiguo 11/11/2014, 12:36
 
Fecha de Ingreso: octubre-2014
Mensajes: 4
Antigüedad: 10 años, 1 mes
Puntos: 0
Respuesta: Como hacer union entre dos SELECT de la misma tabla

Muchas gracias y disculpa la tardanza en reponder! :)

Etiquetas: innerjoin, select, union
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 02:03.