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

buscar distintos

Estas en el tema de buscar distintos en el foro de Mysql en Foros del Web. amigos no puedo hacer una consulta nose si pueden darme una manito es lo siguiente tengo dos tablas, en la tabla1 estan registrados todos los ...
  #1 (permalink)  
Antiguo 28/12/2009, 13:44
Avatar de pedroca  
Fecha de Ingreso: julio-2009
Mensajes: 97
Antigüedad: 14 años, 9 meses
Puntos: 0
buscar distintos

amigos no puedo hacer una consulta nose si pueden darme una manito es lo siguiente tengo dos tablas, en la tabla1 estan registrados todos los usuarios y en la tabla2 se realizan los movimientos de cada usuario y no me sale o mejor dicho nose como hacer esta consulta para ver que usuario no tiene movimientos.

gracias !!!
  #2 (permalink)  
Antiguo 28/12/2009, 13:49
 
Fecha de Ingreso: noviembre-2007
Ubicación: Lanus, Buenos Aires
Mensajes: 178
Antigüedad: 16 años, 5 meses
Puntos: 14
Respuesta: buscar distintos

SELECT * FROM usuarios LEFT JOIN movimientos ON usuarios.id_usuario = movimientos.id_usuario WHERE movimientos.id_usuario IS NULL

prueba con eso =)

Saludos
  #3 (permalink)  
Antiguo 28/12/2009, 13:49
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 14 años, 10 meses
Puntos: 1517
Respuesta: buscar distintos

Algo así creo que lo puedes lograr
Código MySQL:
Ver original
  1. SELECT * FROM tabla1 t INNER JOIN tabla2 tt ON t.ID_usuario = tt.ID_usuario WHERE t.ID_usuario IS NULL
Esto mostrará todos aquellos que no tienes en una de las tablas.
__________________
Verifica antes de preguntar.
Los verdaderos amigos se hieren con la verdad, para no perderlos con la mentira. - Eugenio Maria de Hostos
  #4 (permalink)  
Antiguo 28/12/2009, 14:02
Avatar de pedroca  
Fecha de Ingreso: julio-2009
Mensajes: 97
Antigüedad: 14 años, 9 meses
Puntos: 0
Respuesta: buscar distintos

gracias por las repuestas pero me muestra lo mismo que me salia bueno pero creo que no me explique bien, miren ocurre que cada usuario tiene un codigo asignado que con ese codigo realiza los movimientos diarios los cuales se registran en la tabla2 ahora quiero hacer la comparacion entre la tabla2 y la tabla1 para ver cuales de los usuarios no tienen movimientos nose si se entiende mejor ahora
  #5 (permalink)  
Antiguo 28/12/2009, 14:06
 
Fecha de Ingreso: noviembre-2007
Ubicación: Lanus, Buenos Aires
Mensajes: 178
Antigüedad: 16 años, 5 meses
Puntos: 14
Respuesta: buscar distintos

sea como sea tienes que hacer un join y filtrar los usuarios de la tabla 1 que no aparezcan en la tabla 2, es decir que el campo por el que estas vinculando las tablas debe ser null en la tabla 2, espero haberme explicado bien...

si quieres muestranos la consulta que estas usando asi lo vemos mejor
  #6 (permalink)  
Antiguo 28/12/2009, 14:11
Avatar de pedroca  
Fecha de Ingreso: julio-2009
Mensajes: 97
Antigüedad: 14 años, 9 meses
Puntos: 0
Respuesta: buscar distintos

Cita:
Iniciado por rodrigo_00 Ver Mensaje
sea como sea tienes que hacer un join y filtrar los usuarios de la tabla 1 que no aparezcan en la tabla 2, es decir que el campo por el que estas vinculando las tablas debe ser null en la tabla 2, espero haberme explicado bien...

si quieres muestranos la consulta que estas usando asi lo vemos mejor

eso mismo amigo eso es lo que quiero y no me sale la consulta que estaba haciendo es parecida a la de abimaelrc pero me muestra todos lo unico que a la consulta que yo tenia no le ponia un INNER JOIN sino que utilizaba un DISTINC pero no me sale nada si puedes ayudarme te lo agradeceria mucho gracias
  #7 (permalink)  
Antiguo 28/12/2009, 14:13
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 14 años, 10 meses
Puntos: 1517
Respuesta: buscar distintos

Ok, trate de esta forma y sí logre lo que estas pidiendo, habria que ver que otra forma es mejor para lograrlo, pero mientras tanto esto funciona
Código MySQL:
Ver original
  1. SELECT * FROM tabla1 t INNER JOIN (SELECT ID_usuario FROM tabla2 GROUP BY ID_usuario) tt ON t.ID <> tt.ID_usuario
__________________
Verifica antes de preguntar.
Los verdaderos amigos se hieren con la verdad, para no perderlos con la mentira. - Eugenio Maria de Hostos
  #8 (permalink)  
Antiguo 28/12/2009, 14:18
Avatar de Carxl
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: Bogotá
Mensajes: 2.993
Antigüedad: 17 años, 8 meses
Puntos: 70
Respuesta: buscar distintos

Perdón... pero esto no debería ser de mysql?? Digo yo...
__________________
Hay 10 tipos de personas, los que entienden binario y los que no. (Anónimo)
www.programandoweb.com
  #9 (permalink)  
Antiguo 28/12/2009, 14:19
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 14 años, 10 meses
Puntos: 1517
Respuesta: buscar distintos

Sí, yo creo que ya mismo lo mueven, aunque no indicó que base de datos está usando, pero lo mueven al foro correspondiente.
__________________
Verifica antes de preguntar.
Los verdaderos amigos se hieren con la verdad, para no perderlos con la mentira. - Eugenio Maria de Hostos
  #10 (permalink)  
Antiguo 28/12/2009, 14:20
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 10 meses
Puntos: 2135
Tema movido desde PHP a Mysql
  #11 (permalink)  
Antiguo 28/12/2009, 14:31
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Cáceres
Mensajes: 3.735
Antigüedad: 16 años
Puntos: 300
Respuesta: buscar distintos

pedroca,
la propuesta de Rodrigo_00 debía funcionarte:
SELECT * FROM usuarios LEFT JOIN movimientos ON usuarios.id_usuario = movimientos.id_usuario WHERE movimientos.id_usuario IS NULL

otra opción sería ésta.
SELECT * FROM usuarios u WHERE u.id_usuario NOT IN (SELECT m.id_usuario FROM movimientos m)

Deberías decirnos los nombres de tus campos y tablas.
  #12 (permalink)  
Antiguo 28/12/2009, 14:34
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 14 años, 10 meses
Puntos: 1517
Respuesta: buscar distintos

@jurena ¿y la última que propuse no tiene buen rendimiento?
Código MySQL:
Ver original
  1. SELECT * FROM tabla1 t INNER JOIN (SELECT ID_usuario FROM tabla2 GROUP BY ID_usuario) tt ON t.ID <> tt.ID_usuario
Claro esta que desconocia lo de NOT IN que para mi entender es mucho mejor.
__________________
Verifica antes de preguntar.
Los verdaderos amigos se hieren con la verdad, para no perderlos con la mentira. - Eugenio Maria de Hostos
  #13 (permalink)  
Antiguo 28/12/2009, 14:46
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Cáceres
Mensajes: 3.735
Antigüedad: 16 años
Puntos: 300
Respuesta: buscar distintos

Creo que la que ofrece mejor rendimiento es la propuesta por Rodrigo_00. Yo siempre la he recomendado. La tuya, por no tratarse de una igualdad en el ON del inner join, creo, resultará menos eficiente. No sé si vendría a ser equivalente a una equivalencia con where t.id <> tt.id_usuario. Pero no te fíes de mí, no soy un técnido. Esperaremos otros comentarios

saludos, abimaelrc
  #14 (permalink)  
Antiguo 28/12/2009, 15:56
Avatar de pedroca  
Fecha de Ingreso: julio-2009
Mensajes: 97
Antigüedad: 14 años, 9 meses
Puntos: 0
Respuesta: buscar distintos

Jurena tienes razon al menos eso vi en los resultados pero la de abimaelrc tambien funciona pero la consulta de jurena es mas rapida al ejecutarse gracias a todos por su tiempo gracias me sirvio bastante
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 08:02.