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

Consultar disponibilidad de usuario en dos tablas diferentes

Estas en el tema de Consultar disponibilidad de usuario en dos tablas diferentes en el foro de Mysql en Foros del Web. Buenas. Quiero comprobar la disponibilidad de un usuario o nick en dos tablas. Por q dos tablas?, porq hice un registro en el q el ...
  #1 (permalink)  
Antiguo 23/06/2011, 20:54
Avatar de reborn  
Fecha de Ingreso: febrero-2010
Mensajes: 440
Antigüedad: 14 años, 9 meses
Puntos: 1
Consultar disponibilidad de usuario en dos tablas diferentes

Buenas.

Quiero comprobar la disponibilidad de un usuario o nick en dos tablas.
Por q dos tablas?, porq hice un registro en el q el usuario tiene q confirmarlo por mail, entonces primero inserto los datos en una tabla temporal y, si el usuario confirma, lo paso a la tabla principal.

Ahora estoy queriendo verificar si el nick esta disponible, para evitar duplicados pero no me sale la consulta.

Estaba probando algo asi:

Código PHP:
$user $_POST['username'];

$verificar=mysql_query("SELECT * FROM usuarios, user_temp WHERE usuarios.nickUs='".mysql_real_escape_string($user)."' OR user_temp.nickTemp='".mysql_real_escape_string($user)."'"$db_link)
          or die(
mysql_error); 
En q estoy fallando?
Gracias.
  #2 (permalink)  
Antiguo 23/06/2011, 22:10
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 17 años
Puntos: 2658
Respuesta: Consultar disponibilidad de usuario en dos tablas diferentes

Tal como lo planteas, son tablas no relacionadas, pero que tienen un mismo dato en uno de sus atributos.
Para resolverlo, deberías hacer la consulta con LEFT JOIN, no con coma.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #3 (permalink)  
Antiguo 23/06/2011, 22:16
Avatar de reborn  
Fecha de Ingreso: febrero-2010
Mensajes: 440
Antigüedad: 14 años, 9 meses
Puntos: 1
Respuesta: Consultar disponibilidad de usuario en dos tablas diferentes

Ok, muchas gracias, ahora me pongo a ver eso.
Saludos.
  #4 (permalink)  
Antiguo 24/06/2011, 06:01
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 17 años
Puntos: 2658
Respuesta: Consultar disponibilidad de usuario en dos tablas diferentes

Vamos a ver si te lo puedo plantear un poco más claro.
La idea es que si en ambas tablas el "nick" o username será en definitiva el mismo, ese campo sirve para relacionar ambas tablas, aunque no se declare como FK. por otro lado debemos considerar acotar a qué le llamamos "diposnible".
Según se infiere de tu planteo, un nick está disponible si ya está oficialmente confirmado. A mi entender eso no es correcto, deberías considerar registrados y pendientes, ya que el que esté confirmado no implica que no esté solicitado.
Según este concepto, deberías solamente verificar la tabla temporal, ya que allí estarían todos. Obviamente para que eso funcione, los registros que pasan a la tabla de usuarios jamás deben ser eliminados de la tabla de peticiones.
Si esa es la siatuación, y quieres una consulta que te devuelva todos, lo que te conviene es, usando LEFT JOIN, mas o menos:
Código MySQL:
Ver original
  1. FROM user_temp T  LEFT JOIN usuarios U ON T.user_temp.nickTemp = U.nickUs
  2. WHERE TRUE OR U.nick IS NULL;
Esto te devolverá todo lo que haya en las peticiones y NULL en la de usuarios que no han sido confirmados aún. La idea es que la primera tabla debe contener todos los nicks posibles: Los confirmados, los pendientes, solicitados, todos. Si lo haces con la los usuarios confirmados en primer lugar no te devovlerá datos de lso pendientes, y lo mismo pasará si usas coma o INNER JOIN.
Otra forma de evitar problemas sería declarar UNIQUE el campo del nick, así, sin importar si está o no, al pretender ingresar uno repetido generaría un error.

Dinos cuál es la forma en que trabajas: ¿Borras los confirmados de la tabla? ¿Los conservas un tiempo?
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #5 (permalink)  
Antiguo 27/06/2011, 21:27
Avatar de reborn  
Fecha de Ingreso: febrero-2010
Mensajes: 440
Antigüedad: 14 años, 9 meses
Puntos: 1
Respuesta: Consultar disponibilidad de usuario en dos tablas diferentes

Recien veo la respuesta.
Justamente, volvi a entrar al post para aclarar esa duda. Llegue a la conclusion de q solamente necesitaria consultar a la tabla temporal si es q no borro los registros.

En un principio queria eliminar los datos de la tabla temporal cuando el usuario confirme el registro, pero no se si es lo correcto.
Lo del campo UNIQUE no lo tenia en cuenta.

Mi idea era validar si existe el usuario y el mail y hacer q el usuario escoja otro. Cuando da click en submit, le envia los datos al correo para confirmar y, los datos q ingreso (email, user y clave) van a la tabla temporal.
Si el usuario confirma el registro, todo esos datos pasan a la tabla "oficial" y queria eliminarlo de la tabla temporal.
Pero eso no es todo, queria darle caducidad a la confirmacion del registro, por ejemplo 24 horas o algo por el estilo y, si no confirma durante ese tiempo, borro los datos de la tabla temporal.

Creo q voy a optar por LEFT JOIN, mas q nada para practicar consultas mas complejas, ya q, con php voy bastante bien pero con mysql estoy un poco atascado.

Muchas gracias.

Etiquetas: consultar, diferentes, disponibilidad, tablas, usuarios
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 20:33.