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

[SOLUCIONADO] Consulta SQL para devolver registros si y solo sí están todos los códigos

Estas en el tema de Consulta SQL para devolver registros si y solo sí están todos los códigos en el foro de Mysql en Foros del Web. Hola gente, estoy armando un sql y estoy algo perdido. La consigna es la siguiente, tengo que devolver que alumnos tienen aprobados las materias con ...
  #1 (permalink)  
Antiguo 04/05/2013, 09:56
 
Fecha de Ingreso: abril-2012
Mensajes: 30
Antigüedad: 12 años
Puntos: 0
Consulta SQL para devolver registros si y solo sí están todos los códigos

Hola gente, estoy armando un sql y estoy algo perdido.

La consigna es la siguiente, tengo que devolver que alumnos tienen aprobados las materias con código "1 y 2"... si una de las dos no está no debería devolverme el alumno.


En un ejemplo utilizo la sentencia materias.codigo IN (1,2) me devuelve un conjunto con los que aprobaron las materias 1 y 2, y los que aprobaron solamente la 1 y los que aprobaron solamente la 2, y lo que quiero es que estos dos últimos conjuntos no me los devuelva....

Quizás sea de principiante, pero la verdad que esta vez estoy perdido....
El motor que utilizo es mysql
  #2 (permalink)  
Antiguo 04/05/2013, 11:30
 
Fecha de Ingreso: abril-2013
Mensajes: 23
Antigüedad: 11 años
Puntos: 1
Respuesta: Consulta SQL para devolver registros si y solo sí están todos los códigos

Disculpa, le di enviar sin querer XD.
Código SQL:
Ver original
  1. SELECT dni FROM alumnos WHERE codigo IN(1,2) INTO TABLE aprobados
  2.  
  3. SELECT dni, COUNT(*) AS veces FROM aprobados GROUP BY dni HAVING veces = 2

De todos modos ahora me fijo, calculo que se puede hacer en 1 consulta nomás.

Última edición por todosolucionesweb; 04/05/2013 a las 11:35 Razón: Enviado mal
  #3 (permalink)  
Antiguo 04/05/2013, 11:41
 
Fecha de Ingreso: abril-2013
Mensajes: 23
Antigüedad: 11 años
Puntos: 1
Respuesta: Consulta SQL para devolver registros si y solo sí están todos los códigos

Quizás lo podés hacer en un paso por subconsulta. Ejemplo:
Código MySQL:
Ver original
  1. SELECT dni FROM alumnos
  2. WHERE codigo = 1
  3.     AND dni IN (SELECT b.dni FROM alumnos b WHERE codigo = 2)

Saludos

Última edición por gnzsoloyo; 04/05/2013 a las 11:49 Razón: SQL no etiquetado. Usar Highlight "MySQL"
  #4 (permalink)  
Antiguo 04/05/2013, 15:06
 
Fecha de Ingreso: abril-2012
Mensajes: 30
Antigüedad: 12 años
Puntos: 0
Respuesta: Consulta SQL para devolver registros si y solo sí están todos los códigos

Gracias @todosolucionesweb!!!
Me mandaste una respuesta que fue la que entiendo después no publicaste para corregirla, la que me llego al correo fue finalmente la solución!!!

La solución era:
Código MySQL:
Ver original
  1. SELECT u.apellido
  2. FROM usuarios u
  3. INNER JOIN persona_materias pm ON (pm.cod_persona_educacion = u.codigo)
  4. WHERE  pm.cod_asignatura IN (1,2)
  5. GROUP BY u.apellido HAVING COUNT(*) = 2

Acá me trae solamente aquellos que aprobaron las materias con código 1 y 2.... si el alumno aprobó solamente una, queda fuera por no cumplir la condición del HAVING !!!

Muchas gracias por tu tiempo y tu ayuda!!

Última edición por gnzsoloyo; 04/05/2013 a las 15:20 Razón: SQL mal etiquetado. Usar Highlight "MySQL"
  #5 (permalink)  
Antiguo 04/05/2013, 16:41
 
Fecha de Ingreso: abril-2013
Mensajes: 23
Antigüedad: 11 años
Puntos: 1
Respuesta: Consulta SQL para devolver registros si y solo sí están todos los códigos

Jajaja tenia mis dudas de esa XD, bueno un gusto que haya funcionado
Saludos!

Etiquetas: registros
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 15:00.