Estamos migrando una base de datos y al ejecutar mig_personas en el paso: 07_mdp_personas_documentos nos sale el siguiente error como si estuviese duplicado ese registro. Pero mirando bien no está duplicado, es la misma persona pero con tipo y nro documento distintos. Estamos en la version 3.10.2. Y hemos actualizado a la fecha de hoy los scripts de migración. Les transcribo el error:
Buen día Sergio:
¿En la base ‘origen’ tienen cargada a la misma persona dos veces? ¿Están migrando a una base que ya cuenta con información (migración previa)? También confirmanos por favor si esa persona tiene más de un documento en sga_personas_doc y si el esquema mig estaba vacío al momento de comenzar con esta migración.
¡Gracias!
Hola Emilse, la persona no figura dos veces. Empezamos esta migración de cero sin datos previos. Lo que si, es que esta persona tiene dos documentos en sga_personas_doc pero con tipos y numeros distintos
Sera que existe el mismo documento para una persona en “sga_personas” y para otra persona en “sga_personas_doc” ?
Esta consulta te devuelve algun registro en la base de Guarani 2 en informix?
SELECT * FROM sga_personas_doc as d
WHERE EXISTS (SELECT 1 FROM sga_personas as p WHERE d.nro_inscripcion <> p.nro_inscripcion AND d.pais_documento = p.pais_documento AND d.tipo_documento = p.tipo_documento AND d.numero_documento = p.nro_documento)
Si devuelve datos aca esta el problema, es que existe un mismo nro de documento (pais_docuemento + tipo_documento +
nro_documento) para una persona en sga_personas y para otra persona en sga_personas_doc
Con lo cual hay que corregir esto en la tabla sga_personas_doc…
SELECT * FROM sga_personas_doc as d
WHERE EXISTS (SELECT 1 FROM sga_personas as p WHERE d.unidad_academica = p.unidad_academica AND d.nro_inscripcion = p.nro_inscripcion AND d.pais_documento = p.pais_documento AND d.tipo_documento = p.tipo_documento AND d.numero_documento = p.nro_documento)
Aunque viendo el indice unico que falla, es que tenes registrado para una misma persona un mismo tipo de documento pero con numeroS de documento distintos, es decir por ejemplo una persona tiene cargado dos DNI con numeros diferentes o dos Pasaportes con numeros diferentes.
SELECT * FROM sga_personas_doc as d
WHERE EXISTS (SELECT 1 FROM sga_personas as p WHERE d.unidad_academica = p.unidad_academica AND d.nro_inscripcion = p.nro_inscripcion AND d.pais_documento = p.pais_documento AND d.tipo_documento = p.tipo_documento );
SELECT unidad_academica, nro_inscripcion, pais_documento, tipo_documento , COUNT(*)
FROM sga_personas_doc
GROUP BY 1,2,3,4
HAVING COUNT(*) > 1;
Hola Alejandro, te mando las salidas de las consultas:
SELECT * FROM sga_personas_doc as d
WHERE EXISTS (SELECT 1 FROM sga_personas as p WHERE d.unidad_academica = p.unidad_academica AND d.nro_inscripcion = p.nro_inscripcion AND d.pais_documento = p.pais_documento AND d.tipo_documento = p.tipo_documento AND d.numero_documento = p.nro_documento)
SELECT * FROM sga_personas_doc as d
WHERE EXISTS (SELECT 1 FROM sga_personas as p WHERE d.unidad_academica = p.unidad_academica AND d.nro_inscripcion = p.nro_inscripcion AND d.pais_documento = p.pais_documento AND d.tipo_documento = p.tipo_documento );
Una aclaracón: los valores vacios en esta consulta nosotros los completamos en mig.sga_personas_doc, cosa que para la migración ya tenga esos valores y no queden nulos.
SELECT unidad_academica, nro_inscripcion, pais_documento, tipo_documento , COUNT()
FROM sga_personas_doc
GROUP BY 1,2,3,4
HAVING COUNT() > 1;
En Guarani 3 no se permite que una persona tenga registrado documentos con el mismo tipo de documento
Estas dos personas tienen cargado un pasaporte en sga_personas y el mismo pasaporte en sga_personas_doc:
12 FTS I-0005 52 90 G04325953
13 FTS I-0006 52 90 G04208398
Solución: Borrar estos dos registros que estan duplicados:
DELETE FROM sga_personas_doc WHERE persona_documento IN (12,13)
Estas personas tambien tienen registrado un pasaporte en sga_personas y otro/s pasaportes en sga_personas_doc (estan incluidas las dos personas anteriores):
3 FTS 1225 56 90 10682582 3
10 FTS I-0003 55 90 C2616121
11 FTS I-0004 55 90
12 FTS I-0005 52 90 G04325953
13 FTS I-0006 52 90 G04208398
14 FTS I-0007 595 90
17 FTS 2596 57 90 AM648228
¿Es correcto que una persona tenga mas de un pasaporte con diferente numero?
PD: Agregaremos estos pre-controles en la migración del módulo de Personas para contemplar estos casos.