MySQL - Duplicar registros en tablas relacionadas

 
Vista:
sin imagen de perfil
Val: 2
Ha disminuido su posición en 25 puestos en MySQL (en relación al último mes)
Gráfica de MySQL

Duplicar registros en tablas relacionadas

Publicado por Toni (1 intervención) el 14/08/2020 17:34:41
Hola a todos, espero que podías ayudarme, no consigo generar la consulta sql correcta:
Tengo una tabla donde genero un nuevo proyecto con una idproyecto autoincremental. En este caso el proyecto valdrá idproyecto=9
Luego tengo 2 tablas llamadas n1 y n2 (ver imágenes)

en la tabla n1 tengo los campos:
n1id
n1titulo
n1proyecto

en la tabla n2 tengo los campos:
n2id
n2titulo
n2n1id
n2proyecto

Como veis, ambas tablas se relacionan mediante la clave n1id =n2n1id, así como n1proyecto=n2proyecto
El caso es que inserto varios registros en la tabla n1 y luego hago lo mismo en la tabla n2. Cuando inserto registros en la tabla n2 ya lo hago de manera que el campo n2n1id tenga el mismo valor (según pertoque) que el campo n1id de la tabla n1. En resumidas cuentas la tabla n2 son 'subcategorías' de la tabla n1 (categorías) que se van repartiendo según toque.

Hasta ahí bien.
Una vez tengo volcados los datos, lo que quiero es duplicarlo todo para generar otro proyecto y luego editar aquellos campos que tengan un título o contenido distinto. Es como si fuera una plantilla.

Primero duplico la tabla n1, que es fácil:
INSERT INTO n1 (n1titulo, n1proyecto)
SELECT n1titulo, '72' (este número de id de proyecto viene de otra consulta anterior que no viene al caso)
FROM n1
WHERE n1proyecto= 72

Entonces se me duplican los datos en la tabla n1 y se me generan nuevas filas con valores de n1id autoincrementales. Estos n1id autoincrementales son fundamentales porque luego, cuando haga lo mismo y duplique la tabla n2 tendré que saber qué valores son esos para relacionarlos convenientmente con los del campo n2n1id de la tabla n2. Y eso es lo que no consigo.

He hecho:
INSERT INTO n2 (n2titulo, n2n1id, n2proyecto)
SELECT n2titulo, n1id, '72'
FROM n1, n2
WHERE n1id=n2n1id AND n1proyecto='9'

Se me duplican las filas pero con los datos de n2n1id que había colocado al principio, y no me salen los que generó automáticamente la tabla n1 cuando dupliqué sus registros.

No sé cómo solucionarlo, he oído hablar de INNER JOIN, IF, CASE... pero no sé si es aplicable. Lo he probado todo y no lo consigo!!!!!
Agradecería mucho vuestra ayuda!

Gracias!



nn1
nn2
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder