Ver Mensaje Individual
  #4 (permalink)  
Antiguo 25/10/2014, 02:22
quimfv
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Sabadell
Mensajes: 4.897
Antigüedad: 16 años, 1 mes
Puntos: 574
Respuesta: Consulta base de datos

Deascompongamosla,

primero vemos la subquery, es muy sencilla

Código MySQL:
Ver original
  1. SELECT cod_tema
  2. FROM dilig_cuest
  3. WHERE cod_experto=X

Seleccionamos los codigos de tema que ha respondido el experto X, no tiene secreto. Encerrada entre parentesis la podemos usar como si fuera otra tabla, solo tenemos que ponerle un alias, en este caso Sbc, de subconsulta.

Luego hacemos LEFT JOIN de esa subquery con la tabla temas, el modificador LEFT provoca que se obtengan TODOS los registros de la tabla de la izquierda, temas, combinados o no con los de la tabla de la derecha, en este caso la subquery. La clausula ON t.cod_tema=Sbc.cod_tema indica cual es el campo que vincula las tablas, en este caso se ve modificado por LEFT, se podria leer como todos los que sean iguales y los que el segundo termino de la igualdad sea nulo (ojo si estan puestos en el mismo orden que las tablas)

RegistroDeLaIzquierdaCod_Tema1-RegistroDeLaDerechaCod_Tema1
RegistroDeLaIzquierdaCod_Tema2-Null
RegistroDeLaIzquierdaCod_Tema3-RegistroDeLaDerechaCod_Tema3


Finalmente en el WHERE pedimos que solo retorne aquellos en que el registro de la derecha sea nulo.

Como a la derecha tenemos los temas que ha contestado X y a la izquierda todos los temas, por diferencia obtenemos los que NO ha contestado.
__________________
Quim
--------------------------------------------------
Ayudar a ayudar es una buena práctica!!! Y da buenos resultados.

Última edición por quimfv; 25/10/2014 a las 02:29