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

Campo duplicado

Estas en el tema de Campo duplicado en el foro de Mysql en Foros del Web. Hola! Tengo una base de datos con dos tablas relacionadas. A la hora de insertar datos manualmente en un campo, me salen los datos del ...
  #1 (permalink)  
Antiguo 15/11/2010, 05:57
 
Fecha de Ingreso: febrero-2009
Mensajes: 18
Antigüedad: 15 años, 9 meses
Puntos: 0
Campo duplicado

Hola!

Tengo una base de datos con dos tablas relacionadas. A la hora de insertar datos manualmente en un campo, me salen los datos del campo de la otra tabla dos veces, como en la imagen que os adjunto.

¿Hay la manera de que se vea sin duplicarse?

Gracias!

  #2 (permalink)  
Antiguo 15/11/2010, 06:06
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: Campo duplicado

No están duplicados.
"- Masquefa" y "Masquefa -" son diferentes desde el punto de vista del análisis de datos porque no están escritos de la misma forma.
El problema puede estar en la tabla de datos de donde poblacio toma el valor, ya que pueden haberse guardado ambas formas por su diferencia de ortografía.
Por esas razones no se aconseja almacenar nombres de datos de esta clase manualmente, sino a través de IDs y crear tablas fijas para ellos.
__________________
¿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 15/11/2010, 06:14
 
Fecha de Ingreso: febrero-2009
Mensajes: 18
Antigüedad: 15 años, 9 meses
Puntos: 0
Respuesta: Campo duplicado

Gracias por responder gnzsoloyo.

En la tabla de poblacions solotengo dos registros, como te muestro en la imagen:



Entonces, tengo que relacionar con el campo del id de la tabla poblacions?
  #4 (permalink)  
Antiguo 15/11/2010, 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: 17 años
Puntos: 2658
Respuesta: Campo duplicado

La idea es esa. Cuando tienes dos tablas relacionadas, no se debe relacionarlas por un campo que no sea PK. Como mucho MySQL te admite que uses un campo definido como UNIQUE.
Por otro lado, si sólo tienes esos dos valores el defecto del combo box puede estar surgiendo de algún bug de phpMyADmin.
En cualquier caso que sea, es mejor que la relación sea por la PK de la tabla de poblaciones. Luego el nombre de las poblaciones se recupera con un simple INNER JOIN entre ambas.

Tip: Por cuestiones prácticas es conveniente que los nombres de los campos clave, fundamentalmente numéricos, no sean simplemente "ID". Trata de usa nombres mnemotécnicos tales como poblacion_id, persona_id, empleado_id, y luego usa ese mismo nombre en las tablas donde los uses como clave foránea (o externa). De esa forma ciertas consultas de JOINs serán más simples de escribir, y además los nombres de las claves más fáciles de recordar.
Por caso, si estás acostumbrado a usar la coma en el FROM y no escribir JOIN o INNER JOIN, el parser de MySQL funcionará mejor, porque la coma le indica que empareje siempre los campos del mismo nombre, y con esta forma no se puede equivocar.
Esa es la forma estandar de usarlos si te fijas en modelos de bases de datos profesionales.
__________________
¿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 16/11/2010, 03:45
 
Fecha de Ingreso: febrero-2009
Mensajes: 18
Antigüedad: 15 años, 9 meses
Puntos: 0
Respuesta: Campo duplicado

Entonces tengo que poner como PK el campo id de la tabla poblacions?
  #6 (permalink)  
Antiguo 16/11/2010, 03:58
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: Campo duplicado

Eso es lo que te estoy diciendo... ¿No se entiende bien?

Bueno, esa es la idea y la forma en que se diseñan las bases de datos relacionales, y es precisamente por eso que se usan las FK.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #7 (permalink)  
Antiguo 16/11/2010, 04:12
 
Fecha de Ingreso: febrero-2009
Mensajes: 18
Antigüedad: 15 años, 9 meses
Puntos: 0
Respuesta: Campo duplicado

Perdona gnzsoloyo pero voy un poco torpe con este tema.

De acuerdo, he cambiado los nombres de los campos id y también he puesto como PK el campo id_poblacions de la tabla poblacions.



Y en la tabla emails, el campo id_emails es de tipo UNIQUE y el campo id_poblacions es del tipo INDEX.



Pero ahora no me deja hacer las relaciones. Qué estoy haciendo mal? O qué me estoy dejando?
  #8 (permalink)  
Antiguo 16/11/2010, 04:22
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: Campo duplicado

Quitale el INDEX en id_poblacions y prueba crear directamente la relación (FK) hacia la otra tabla en ese campo. El INDEX lo crea automáticamente cuando define la FK.
En tanto los campos sean iguales en tipo de dato, no debería generar problemas.

Si no puedes, fíjate en el contenido de las tablas. La FK no permitirá en la tabla d eemails valores que no existan en la otra para ese campo.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #9 (permalink)  
Antiguo 16/11/2010, 04:47
 
Fecha de Ingreso: febrero-2009
Mensajes: 18
Antigüedad: 15 años, 9 meses
Puntos: 0
Respuesta: Campo duplicado

He quitado el INDEX en id_poblacions de la tabla emails.

Es correcto crear la relación (FK) de la siguiente manera?

FOREIGN KEY (id_poblacions) REFERENCES poblacions (id_poblacions)

Porque me sale error. Y el campo id_poblacions de la tabla emails contienen el número 1, tal y como tienen en la tabla poblacions
  #10 (permalink)  
Antiguo 16/11/2010, 05:57
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: Campo duplicado

¿Qué error te sale?
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #11 (permalink)  
Antiguo 16/11/2010, 06:08
 
Fecha de Ingreso: febrero-2009
Mensajes: 18
Antigüedad: 15 años, 9 meses
Puntos: 0
Respuesta: Campo duplicado

Me sale el siguiente error:

  #12 (permalink)  
Antiguo 16/11/2010, 08:03
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: Campo duplicado

Es que eso va en un ALTER TABLE...
Código MySQL:
Ver original
  1. ALTER TABLE emails
  2. ADD FOREIGN KEY (id_pobacions) REFERENCES pobacions(id_pobacions)

13.1.2. Sintaxis de ALTER TABLE
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #13 (permalink)  
Antiguo 18/11/2010, 02:51
 
Fecha de Ingreso: febrero-2009
Mensajes: 18
Antigüedad: 15 años, 9 meses
Puntos: 0
Respuesta: Campo duplicado

Buenos días, gracias por la paciencia.

Si pongo lo que me dices me sale lo siguiente:

  #14 (permalink)  
Antiguo 18/11/2010, 02:58
 
Fecha de Ingreso: febrero-2009
Mensajes: 18
Antigüedad: 15 años, 9 meses
Puntos: 0
Respuesta: Campo duplicado

Perdona, repasando la base de datos encontré un campo vació y por eso me salía este último error.

Pero ahora que me lo ha aceptado, sigue apareciendo todo duplicado. Te comento que en la tabla Poblacions tengo 5 registros.

  #15 (permalink)  
Antiguo 18/11/2010, 04: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: Campo duplicado

Cita:
Iniciado por tornako Ver Mensaje
Buenos días, gracias por la paciencia.

Si pongo lo que me dices me sale lo siguiente:

Esto sucede cuando las tablas ya tienen datos y hay al menos un registro que no cumple con la restricción.

VErificalos datos en las tablas. El campo FK no puede ser NULL ni tampoco un valor que no esté en la tabla origen.
Tampoco pueden ser de longitudes o tipos distintos, o collations diferentes cuando son caracteres.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #16 (permalink)  
Antiguo 18/11/2010, 04:04
 
Fecha de Ingreso: febrero-2009
Mensajes: 18
Antigüedad: 15 años, 9 meses
Puntos: 0
Respuesta: Campo duplicado

Correcto, esto ya lo he solucionado como te lo digo en el último mensaje. Pero aún tengo los datos duplicados. Mira mi mensaje anterior.

saludos
  #17 (permalink)  
Antiguo 18/11/2010, 04:06
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: Campo duplicado

Cita:
Pero ahora que me lo ha aceptado, sigue apareciendo todo duplicado. Te comento que en la tabla Poblacions tengo 5 registros.
Podrías mostrar la consulta que te devuelve el duplicado que mencionas, así como la tabla resultado donde aparece la duplicidad?
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #18 (permalink)  
Antiguo 18/11/2010, 04:42
 
Fecha de Ingreso: febrero-2009
Mensajes: 18
Antigüedad: 15 años, 9 meses
Puntos: 0
Respuesta: Campo duplicado

No es ninguna consulta. Es la imagen que te muestro donde te digo esto.

Etiquetas: duplicado, campos
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 10:02.