Ver Mensaje Individual
  #4 (permalink)  
Antiguo 24/06/2011, 06:01
Avatar de gnzsoloyo
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)