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

Seleccionar datos de tabla B que no esten en la tabla A e insertarlos en la Tabla A

Estas en el tema de Seleccionar datos de tabla B que no esten en la tabla A e insertarlos en la Tabla A en el foro de Mysql en Foros del Web. Hola amigos buena noche: Quisiera realizar pedirles por favor de su apoyo para resolver la siguiente necesidad: Tengo dos tablas: Código: CREATE TABLE type1 ( ...
  #1 (permalink)  
Antiguo 03/10/2014, 21:54
 
Fecha de Ingreso: julio-2012
Mensajes: 18
Antigüedad: 11 años, 9 meses
Puntos: 0
Exclamación Seleccionar datos de tabla B que no esten en la tabla A e insertarlos en la Tabla A

Hola amigos buena noche:

Quisiera realizar pedirles por favor de su apoyo para resolver la siguiente necesidad:

Tengo dos tablas:

Código:
CREATE TABLE
    type1
    (
        id_type INT NOT NULL AUTO_INCREMENT,
        type VARCHAR(50),
        id_vers INT,
        date_type TIMESTAMP,
        PRIMARY KEY (id_type, date_type)
    )
    ENGINE=InnoDB DEFAULT CHARSET=utf8;

CREATE TABLE
    type2
    (
        id_type INT NOT NULL AUTO_INCREMENT,
        type VARCHAR(50),
        id_vers INT,
        date_type TIMESTAMP,
        PRIMARY KEY (id_type, date_type)
    )
    ENGINE=InnoDB DEFAULT CHARSET=utf8;
Como veran son dos tablas identicas, la diferencia que hay es que en la segunda tabla type2 hay datos que no hay en la tabla primera (type1). Necesito obtener los valores que no estan en la tabla (type1) e insertarlos en esa misma tabla.


La consulta que he intentado realizar es la siguiente pero no he tenido éxito:

Código:
INSERT INTO type1
SELECT *
FROM type2 AS t1 
left join type1 AS t2 on t1.type=t2.type AND t1.id_vers=t2.id_vers
Por ejemplo

type1

Código:
id   type              id_vers                 date_type
1    Americano        1                2014-10-03 17:55:14
2    Frances            1                2014-10-03 17:56:00 
3    Asatico             2                2014-10-03 17:57:00
type2

Código:
id   type              id_vers                    date_type
1    Americano        1                   2014-10-03 17:55:00
2    Frances            1                   2014-10-03 17:56:00 
3    Asatico             2                   2014-10-03 17:57:00
4    Africano       1                   2014-10-03 17:58:00
5    Europeo           3                   2014-10-03 17:59:00   
Como se puede observar los datos de la tabla type2 con id 4 y 5 no estan en la primera tabla, estos son los que quisiera obtenerlos e insertarlos en la tabla type1.

De antemano gracias por su tiempo y atención...

Saludos
  #2 (permalink)  
Antiguo 04/10/2014, 04:30
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Cáceres
Mensajes: 3.735
Antigüedad: 16 años
Puntos: 300
Respuesta: Seleccionar datos de tabla B que no esten en la tabla A e insertarlos en l

Necesitamos que nos aclares algo más, si solo te interesa el type o también el id_vers y el date_type tienen que ser coincidentes, pues en el type americano del ejemplo que pones no coinciden los segundos de la fecha hora. Si te basta con el type y el id_vers deberías hacer algo así para obtener los del type2 que no están en el type1
Código MySQL:
Ver original
  1. SELECT t2.id, t2.type, t2.id_vers, t2.date_type
  2.   FROM type2 t2
  3.      LEFT JOIN type1 t1
  4.        ON (t2.type = t1.type AND t2.id_vers = t1.id_vers)

Aunque no lo he probado, creo que con eso bastaría para obtenerlo. Para la inserción hay que hacer algo más, pero dinos primero si eso es lo que buscabas
  #3 (permalink)  
Antiguo 04/10/2014, 12:09
 
Fecha de Ingreso: julio-2012
Mensajes: 18
Antigüedad: 11 años, 9 meses
Puntos: 0
Respuesta: Seleccionar datos de tabla B que no esten en la tabla A e insertarlos en l

Muchas gracias jurena por tomarte tu tiempo en responderme.
En efecto los que deben ser coincidentes es el type y el id_vers. En cuanto al ejemplo el type americano de las dos tablas es el mismo deben de tener la misma fecha solo que me equivoque a la hora de escribirlo. Pero en si los campos que deben ser coincidentes son solo el type y el id_vers.

Voy a provar tu consulta.

De antemano muchas gracias Saludos.

Etiquetas: select, tablas
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 22:27.