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

Obtener registros de la tabla A que no estan en la tabla B

Estas en el tema de Obtener registros de la tabla A que no estan en la tabla B en el foro de Mysql en Foros del Web. Hola, Les comento como tengo armada las tablas y que necesito: Tengo 3 tablas: usuarios, mensajes y log usuarios: contiene los usuarios registrados en la ...
  #1 (permalink)  
Antiguo 08/09/2011, 05:10
 
Fecha de Ingreso: noviembre-2008
Mensajes: 67
Antigüedad: 11 años, 3 meses
Puntos: 1
Pregunta Obtener registros de la tabla A que no estan en la tabla B

Hola,


Les comento como tengo armada las tablas y que necesito:

Tengo 3 tablas: usuarios, mensajes y log

usuarios: contiene los usuarios registrados en la aplicación.
mensajes: son mensajes que se publican diariamente con su contenido y fecha.
log: registra que usuarios vieron los mensajes en sus respectivas fechas.


Para saber que cantidad de usuarios y cules vieron los mensajes utilizo estas 2
consultas


1) Con esta consulta obtengo la cantidad de usuarios por dia que vieron los mensajes. Luego armo un bulce y dentro del bucle meto la consulta 2.

SELECT COUNT( a.usuario_id ) AS 'cantidad', a.msj_id, b.msjTitulo
FROM `log` AS a
INNER JOIN mensajes AS b ON b.id = a.msj_id
GROUP BY a.msj_id
ORDER BY a.msj_id DESC



2) Con esta consulta obtengo el nombre de cada usuario filtrando por msg_id de la tabla log con var_msj_id obtenido de la consulta 1

SELECT U.usuario
FROM `log` AS a
INNER JOIN usuarios AS U ON U.id = a.usr_id
WHERE a.msj_id=var_msj_id


Ahora necesito saber como puedo hacer para obtener lo mismo pero con los usuarios que no vieron los mensajes, es decir quiene no aparecen en la tabla log.

Muchas gracias a quien pueda ayudarme
  #2 (permalink)  
Antiguo 08/09/2011, 07:47
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Sabadell
Mensajes: 4.897
Antigüedad: 11 años, 11 meses
Puntos: 574
Respuesta: Obtener registros de la tabla A que no estan en la tabla B

Los que estan en la tabla log
Código MySQL:
Ver original
  1. SELECT U.usuario
  2. FROM usuarios AS U
  3. WHERE U.id IN (SELECT DISTINCT a.usr_id
  4.                           FROM `log` AS a)


Los que no estan en la tabla log
Código MySQL:
Ver original
  1. SELECT U.usuario
  2. FROM usuarios AS U
  3. WHERE U.id NOT IN (SELECT DISTINCT a.usr_id
  4.                                  FROM `log` AS a)

Los que estan con relacion a un mensaje concreto (var_msj_id)
Código MySQL:
Ver original
  1. SELECT U.usuario
  2. FROM usuarios AS U
  3. WHERE U.id IN (SELECT DISTINCT a.usr_id
  4.                           FROM `log` AS a
  5.                            WHERE a.msj_id=var_msj_id)


Los que no estan con relacion a un mensaje concreto (var_msj_id)
Código MySQL:
Ver original
  1. SELECT U.usuario
  2. FROM usuarios AS U
  3. WHERE U.id NOT IN (SELECT DISTINCT a.usr_id
  4.                                   FROM `log` AS a
  5.                                    WHERE a.msj_id=var_msj_id)


Cita:
1) Con esta consulta obtengo la cantidad de usuarios por dia que vieron los mensajes. Luego armo un bulce y dentro del bucle meto la consulta 2.
Esa consulta no tinen ninguna limitació por dia!?!?

l o g ... no LOG no se por que me lo cambia
__________________
Quim
--------------------------------------------------
Ayudar a ayudar es una buena práctica!!! Y da buenos resultados.

Última edición por quimfv; 08/09/2011 a las 07:57
  #3 (permalink)  
Antiguo 08/09/2011, 14:34
 
Fecha de Ingreso: noviembre-2008
Mensajes: 67
Antigüedad: 11 años, 3 meses
Puntos: 1
Respuesta: Obtener registros de la tabla A que no estan en la tabla B

Muchas gracias por la respuesta, aunque sigo intentando resolver el problema.
No, la consulta no tiene limitacion por dia, sino que cada mensaje tiene la fecha,titulo, texto y al grupar por id de mensaje muestro la fecha.

El resultado de la consulta para usuarios que vieron los mensajes los listo de esta forma


fecha Msj titulo (total de usuarios)

08/09/2011 prueba Mensaje (4)
Maria Pilar
Fernando Rodirguez
Camila Diaz
Roberto Roberts

07/09/2011 prueba Mensaje (2)
Fernando Rodirguez
Roberto Roberts



Y la idea es hacer lo mismo para quiene nos vieron los mensajes, ejemplo


08/09/2011 prueba Mensaje (1)
Noelia Campo

07/09/2011 prueba Mensaje (3)
Maria Pilar
Camila Diaz
Noelia Campo


Gracias por la ayud que puedan darme!
  #4 (permalink)  
Antiguo 09/09/2011, 02:04
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Sabadell
Mensajes: 4.897
Antigüedad: 11 años, 11 meses
Puntos: 574
Respuesta: Obtener registros de la tabla A que no estan en la tabla B

La ultima sentencia que te he puesto hace lo que pides....???

Si se te tiene que ayudar en algo mas di en que.
__________________
Quim
--------------------------------------------------
Ayudar a ayudar es una buena práctica!!! Y da buenos resultados.

Etiquetas: join, registros, select, tabla
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 21:57.