Ver Mensaje Individual
  #2 (permalink)  
Antiguo 09/03/2012, 16:31
leonardo_josue
Colaborador
 
Fecha de Ingreso: enero-2007
Ubicación: México
Mensajes: 2.097
Antigüedad: 17 años, 4 meses
Puntos: 447
Respuesta: problema para unir tablas

hola nh2006:

Este tipo de consultas lo hemos discutido muchas veces en el foro, ya que es bastante usual. Hay muchas formas de atacar el problema, una forma sería más o menos así:

Código MySQL:
Ver original
  1. mysql> SELECT S.* FROM Secciones S INNER JOIN
  2.     ->  (SELECT id_seccion
  3.     ->  FROM Secciones_criterios
  4.     ->  WHERE calificacion = 10
  5.     ->  GROUP BY id_seccion
  6.     ->  HAVING COUNT(DISTINCT criterio) =
  7.     ->  (SELECT COUNT(criterio) FROM criterios)) T
  8.     ->  ON T.id_seccion = S.id_seccion;
  9. +------------+----------+
  10. | id_seccion | seccion  |
  11. +------------+----------+
  12. |          1 | Analisis |
  13. +------------+----------+
  14. 1 row in set (0.14 sec)

La idea es contar cuantos registros distintos existen con una calificación de 10 para cada seccion.

Si ejecutas la subconsulta sola regresaría algo como esto:

Código MySQL:
Ver original
  1. mysql> SELECT id_seccion, COUNT(DISTINCT criterio)
  2.     ->  FROM Secciones_criterios
  3.     ->  WHERE calificacion = 10
  4.     ->  GROUP BY id_seccion;
  5. +------------+--------------------------+
  6. | id_seccion | COUNT(DISTINCT criterio) |
  7. +------------+--------------------------+
  8. |          1 |                        5 |
  9. |          2 |                        4 |
  10. +------------+--------------------------+
  11. 2 rows in set (0.00 sec)

Dado que quieres que se cumpla que TODOS LOS CRITERIOS sean calificados con 10 sólo tienes que utilizar la función HAVING para filtrar.

Saludos
Leo.