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

consulta sql

Estas en el tema de consulta sql en el foro de Mysql en Foros del Web. hola muy buenas haber s alguien puede ayudarme con esta consulta necesito acceder a una tabla para verificar que un email no este repetido, el ...
  #1 (permalink)  
Antiguo 26/03/2013, 05:21
 
Fecha de Ingreso: agosto-2011
Ubicación: barcelona
Mensajes: 237
Antigüedad: 12 años, 8 meses
Puntos: 1
consulta sql

hola muy buenas
haber s alguien puede ayudarme con esta consulta necesito acceder a una tabla para verificar que un email no este repetido, el caso es que esto sirve para modificar los datos de un usuario ya registrado y en caso que quisiera cambiar su email la consulta me generara los resultados de si se repite el email pues el usuario ya existe para eso ningún problema pero como evito que el email del usuario que quiere modificar-lo lo me lo muestre esta es la consulta que tengo como podria decirle que me salte el usuario que quiero modificar

Código MySQL:
Ver original
  1. from usuario_user
  2. where email_user='$formusuario_user' AND tienda = '$tienda';

es decir seria decirle que un usuario en concreto se lo salte

Última edición por gnzsoloyo; 26/03/2013 a las 06:20
  #2 (permalink)  
Antiguo 26/03/2013, 06:31
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 5 meses
Puntos: 2658
Respuesta: consulta sql

Primero: Respira hondo, y trata de tomarlo con calma.
Segundo: Si escribes de corrido así, sin puntos ni comas, el texto se vuelve ilegible y suena a desesperación. Es difícil ayudarte.

Yendo al problema, lo más simple de hacer, si el e-Mail debe ser siempre único, es crear un índice UNIQUE sobre ese campo. Al hacer eso, todo intento de INSERT o UPDATE con un valor ya existente devolverá un error por clave duplicada.
En el caso del INSERT, no realizará la inserción pedida, y en el UPDATE rechazará el cambio. Es algo medio brutal, pero eficiente. Es brutal, porque el fallo lo tendrás que controlar programáticamente y verificar la causa;
Fuera de eso, para validar antes de enviar innecesariamente ese INSERT/UPDATE, lo que debes hacer siempre es verificar con una consulta previa si ese e-Mail ya existe en la tabla con algo tan sencillo como:
Código MySQL:
Ver original
  1. SELECT COUNT(1) existe
  2. FROM usuario_user
  3. WHERE email_user='$formusuario_user';
Donde cualquier valor diferente de cero implicará que el mail existe.
Esa es una consulta muy rápida, y si la haces creando el índice, será más rápida aún, porque no llegará a leer la tabla. Simplemente buscará en el índice.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)

Última edición por gnzsoloyo; 26/03/2013 a las 06:48
  #3 (permalink)  
Antiguo 27/03/2013, 12:53
 
Fecha de Ingreso: marzo-2013
Mensajes: 13
Antigüedad: 11 años, 1 mes
Puntos: 0
Respuesta: consulta sql

Como dice gnzsoloyo pon signos de puntuación, es casi imposible entender lo que dices.

Puedes hacer una comprobación previa como te dice el compañero, o sino hacer un insert on duplicate de key, y de existir puedes modificarlo.

También puedes hacer un insert condicional, para agrupar la insert y la condición usando la tabla dual: http://www.tuprogramacion.com/bases-de-datos/insert-condicional-en-mysql/

aqui se explica un poco, pero realmente no se si esto lo que deseas, espero haber servido de ayuda, un saludo

Última edición por JuanRios; 30/03/2013 a las 07:03

Etiquetas: select, sql, 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 11:20.