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

saber Registros dentro de una tabla A que no existan dentro de la tabla B

Estas en el tema de saber Registros dentro de una tabla A que no existan dentro de la tabla B en el foro de Mysql en Foros del Web. Hola amigos tengo dos tablas una de usuarios y otra de un cuestionario que los usarios responden (encuesta) mi objetivo es saber como obtener aquellos ...
  #1 (permalink)  
Antiguo 22/10/2010, 13:56
Avatar de chalchis  
Fecha de Ingreso: julio-2003
Mensajes: 1.773
Antigüedad: 20 años, 9 meses
Puntos: 21
saber Registros dentro de una tabla A que no existan dentro de la tabla B

Hola amigos tengo dos tablas una de usuarios y otra de un cuestionario que los usarios responden (encuesta) mi objetivo es saber como obtener aquellos usuarios que no han contestado.

esta es mi tabla A (usuarios)
Código:
mod10_usr_id,
mod1_mat_id,
mod1_grupos_id
esta es mi tabla B (cuestionario)
Código:
mod1_evaldocente_id
mod10_usr_id,
mod1_mat_id,
mod1_grupos_id,
mod1_evaldocente_idpregunta
en esta tabla B el usuario puede tener varias respuestas osea se hace producto cartesiano

entonces como podria hacer el query para saber que usuario de la tabla A no han contestado o no se encuentran en la tabla b de acuerdo a la materia que es el campo mod1_mat_id y el grupo mod1_grupos_id osea un filtrado seria

Código:
SELECT
mod10_usr_id,
mod1_mat_id,
mod1_grupos_id
FROM
mod1_alumnos_materias
WHERE
mod1_mat_id =  '841' AND
mod1_grupos_id =  '20'
ORDER BY
mod10_usr_id ASC
__________________
gerardo
  #2 (permalink)  
Antiguo 22/10/2010, 15:57
Avatar de dargorg  
Fecha de Ingreso: octubre-2010
Ubicación: Castellón (España)
Mensajes: 188
Antigüedad: 13 años, 5 meses
Puntos: 9
Respuesta: saber Registros dentro de una tabla A que no existan dentro de la tabla B

Código:
SELECT *
FROM A
WHERE campo_a_filtrar NOT IN (SELECT campo_a_filtrar FROM B)
Prueba esto y ya me dices,

Un saludo,
  #3 (permalink)  
Antiguo 22/10/2010, 16:11
Avatar de chalchis  
Fecha de Ingreso: julio-2003
Mensajes: 1.773
Antigüedad: 20 años, 9 meses
Puntos: 21
Respuesta: saber Registros dentro de una tabla A que no existan dentro de la tabla B

fijate tambien encontre esto no se si pueda servir

Código:
SELECT numemp, nombre, oficina
FROM empleados
WHERE NOT EXISTS ( SELECT * FROM oficinas WHERE empleados.oficina = oficinas.oficina AND dir = 108);
es un ejemplo alterno que indica (Obtenemos los empleados tales que no exista una oficina igual a la suya que además esté dirigida por el empleado 108, con esta solución sí aparecen los empleados que no tienen oficina.
)

probare tu opcion y te aviso

saludos y gracias
__________________
gerardo
  #4 (permalink)  
Antiguo 22/10/2010, 17:37
Avatar de dargorg  
Fecha de Ingreso: octubre-2010
Ubicación: Castellón (España)
Mensajes: 188
Antigüedad: 13 años, 5 meses
Puntos: 9
Respuesta: saber Registros dentro de una tabla A que no existan dentro de la tabla B

La técnica que comentas es la misma que yo te he posteado anteriormente. Es lo mismo utilizar NOT IN que NOT EXISTS en tu caso.

Un saludo,
  #5 (permalink)  
Antiguo 25/10/2010, 09:39
Avatar de chalchis  
Fecha de Ingreso: julio-2003
Mensajes: 1.773
Antigüedad: 20 años, 9 meses
Puntos: 21
Respuesta: saber Registros dentro de una tabla A que no existan dentro de la tabla B

hola he estado probando los querys y ya me funciona usando not exists

Código:
SELECT
mod1_alumnos_materias.mod10_usr_id
FROM
mod1_alumnos_materias 
WHERE 
mod1_alumnos_materias.mod1_mat_id =  '841' AND
mod1_alumnos_materias.mod1_grupos_id =  '20' AND
not exists (
SELECT * FROM mod1_encuesta_evaluacion_docentes 
WHERE 
mod1_alumnos_materias.mod10_usr_id = mod1_encuesta_evaluacion_docentes.mod10_usr_id 
)
quise hacer lo mismo con not in y sale error de sintaxis

que podria hacer mal , cambia la perpectiva del where¿?
__________________
gerardo
  #6 (permalink)  
Antiguo 25/10/2010, 09:51
Avatar de chalchis  
Fecha de Ingreso: julio-2003
Mensajes: 1.773
Antigüedad: 20 años, 9 meses
Puntos: 21
Respuesta: saber Registros dentro de una tabla A que no existan dentro de la tabla B

listo ya usando not in ya sale

Código:
SELECT mod1_alumnos_materias.mod10_usr_id
FROM
mod1_alumnos_materias
WHERE
mod1_alumnos_materias.mod1_mat_id =  '841' AND
mod1_alumnos_materias.mod1_grupos_id =  '20' AND
mod1_alumnos_materias.mod10_usr_id NOT IN  (SELECT mod1_encuesta_evaluacion_docentes.mod10_usr_id FROM mod1_encuesta_evaluacion_docentes  WHERE mod1_alumnos_materias.mod10_usr_id = mod1_encuesta_evaluacion_docentes.mod10_usr_id)

gracias amigo dargorg
por la ayuda

saludos
__________________
gerardo
  #7 (permalink)  
Antiguo 26/10/2010, 02:02
Avatar de dargorg  
Fecha de Ingreso: octubre-2010
Ubicación: Castellón (España)
Mensajes: 188
Antigüedad: 13 años, 5 meses
Puntos: 9
Respuesta: saber Registros dentro de una tabla A que no existan dentro de la tabla B

Se te olvidó poner el campo a filtrar tal como te puse en mi ejemplo, ejje

De nada, un saludo y suerte!!
  #8 (permalink)  
Antiguo 26/10/2010, 23:38
Avatar de chalchis  
Fecha de Ingreso: julio-2003
Mensajes: 1.773
Antigüedad: 20 años, 9 meses
Puntos: 21
Respuesta: saber Registros dentro de una tabla A que no existan dentro de la tabla B

algun ejmplo o donde estoy mal

saludos
__________________
gerardo

Etiquetas: registros, tablas
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 13:35.