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

problema con consulta a dos tablas

Estas en el tema de problema con consulta a dos tablas en el foro de Mysql en Foros del Web. Buenas a todos!!! estoy teniendo el siguiente problema: tengo 2 tablas: contactosconmailsy hoja1 ... las 2 tablas son iguales y quiero pasar todos los datos ...
  #1 (permalink)  
Antiguo 29/09/2009, 20:37
 
Fecha de Ingreso: julio-2008
Mensajes: 45
Antigüedad: 15 años, 8 meses
Puntos: 1
problema con consulta a dos tablas

Buenas a todos!!!
estoy teniendo el siguiente problema:
tengo 2 tablas: contactosconmailsy hoja1 ... las 2 tablas son iguales y quiero pasar todos los datos de hoja1 a contactosconmails .. el tema es que el campo email es unique ,entonces no puede haber repetidos .. y se que en hoja1 hay repetidos con respecto a contactosconmails entonces hice la siguiente consulta:

SELECT * FROM hoja1,contactosconmails
WHERE contactosconmails.email != hoja1.email

Lo raro es lo siguiente :
contactosconmail : 4500 datos
hoja1 : 1000 datos

resultado de la consulta : 4.580.650 datos!!!

escualquiera!!! como que me los repite a todos lo de una talba todas la veces que encuentra un dato ... pero realmente no entiendo que es lo que hago mal!!!
no es una consulta compleja...
alguien me puede ayudar??
Muchas gracias!!!
  #2 (permalink)  
Antiguo 29/09/2009, 21:00
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, 4 meses
Puntos: 2658
Respuesta: problema con consulta a dos tablas

En primer lugar, esta consulta:
Código sql:
Ver original
  1. SELECT *
  2. FROM hoja1,contactosconmails
  3. WHERE contactosconmails.email != hoja1.email
crea un producto cartesiano entre hoja1 y contactosconmails, lo que significa multiplicar los registros de una con los registros de la otra... o sea, cerca de 4.500.000 registros. De allí el problema.

En segundo lugar, es evidente que las tablas no son exactamente iguales, al menos en cuanto a los nombres de los campos, ya que sinó se hubiese generado un INNER JOIN sobre los campos del mismo nombre, y hubieses tenido menor resultado.
Cita:
quiero pasar todos los datos de hoja1 a contactosconmails
En tercer lugar, si lo que quieres es pasar los datos de una tabla a otra, un SELECT con JOIN (la coma, en este caso), no es el modo de hacerlo. Esto:
Código sql:
Ver original
  1. INSERT IGNORE INTO contactosconmails
  2. SELECT *
  3. FROM hoja1;
funcionará si la PK de dos registros es la misma.
Nota: En este caso las tablas deben ser forzosamente iguales, en cantidad de columnas y tipo de datos y en el mismo orden. De lo contrario hay que especificar qué columnas de datos tiene la tabla destino y cuáles (misma cantidad) se están pasando desde la tabla origen.
__________________
¿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; 29/09/2009 a las 21:06
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 02:15.