Página 1 de 1

Introducir datos relacionados al copiar de Calc

Publicado: Vie Dic 21, 2018 1:51 pm
por apemarr
S.O: Windows 7
version: LibreOffice 6.1

Estoy trabajando con una hoja de datos Calc que tiene unos 13000 registros y los estoy copiando a la tabla. Lo he hecho con la tabla de datos personales pero el problema es a la hora de copiar los datos a la tabla de UnidadesDeCompetencia_Habilitadas, una de las claves es Cod_cualificacion que no aparece en la hoja de datos. ¿Hay alguna forma sin ser que meter los datos a mano de que al copiar desde Calc rellene el campo Cod_cualificacion que esta relacionado con la tabla UnidadesDecompetencia?
Imagen

Re: Introducir datos relacionados al copiar de Calc

Publicado: Dom Dic 23, 2018 5:12 pm
por Longi
Buenas!
La pregunta no está del todo clara, pero si es como creo tendrías que importar las dos tablas (creo que tienes dos tablas en calc) en dos tablas diferentes de base.
Después tendrías que intentar un SQL que haga un Update en la que te interesa para meter el índice que te interesa, eso si, necesitas que haya alguna forma de relacionarlas.
De todos modos un ejemplo sería de agradecer para saber qué o cómo hacer.
Un saludo!

Re: Introducir datos relacionados al copiar de Calc

Publicado: Vie Dic 28, 2018 10:54 am
por apemarr
Gracias por responder!
Paso imagen de relaciones
Imagen
La tabla de UnidadDecompetencia_Habilitadas no está relacionada porque tuve que cambiar las claves al hacer la importación(los tres campos deberian ser clave) y deberian estar relacionados con el nif de Datos_personales y Cod_unidadCompetencia y Cod_cualificacion con la tabla UnidadesDeCompetencia.
Pongo de ejemplo que la persona con Nif "D 9999999X" puede tener una o varias unidades de competencia, como por ejemplo la que se corresponde con el código "UC1111_2" que tiene como denominación "Organizar trabajos de albañilería", este código está asociado a uno o varios códigos de cualificación, es el caso de "ABC111_2" con cualificación de "Pavimentos y Albañilería de Urbanización".
Voy a hacer el update como decias con un inner join entiendo aqui esta la sentencia:

Código: Seleccionar todo

UPDATE "UnidadesDeCompetencia_Habilitadas" SET "UnidadesDeCompetencia_Habilitadas"."Cod_Cualificacion"="UnidadesDeCompetencia"."Cod_Cualificacion" FROM "UnidadesDeCompetencia_Habilitadas" INNER JOIN "UnidadesDeCompetencia" ON "UnidadesDeCompetencia_Habilitadas"."Cod_UnidadCompetencia"= "UnidadesDeCompetencia"."Cod_UnidadCompetencia"
Pero me da el error:
Column not found: UnidadesDeCompetencia.Cod_Cualificacion

Re: Introducir datos relacionados al copiar de Calc

Publicado: Vie Dic 28, 2018 7:01 pm
por RMG
Hola,

Parece ser que no encuentra el campo Cod_Cualificacion, revisa que no has puesto tilde y esta bien escrito. Otra cosa que te aconsejo es que elimines las relaciones y despues las vuelvas a poner.

Pero lo mejor para poder ayudar, es que como te dice Longi, adjuntes un pequeño ejemplo de la BD con datos ficticios.

Saludos

Re: Introducir datos relacionados al copiar de Calc

Publicado: Mié Ene 02, 2019 1:40 pm
por apemarr
Bueno ahi va la BD de ejemplo.
La tabla UnidadesDecompetencia_Habilitadas no es que no tenga datos sino que no aparecen hasta que seleccionas el/los campo/s. Ocurrió cuando me apareció el mensaje de que habia campos clave repetidos al hacer la importación.

Re: Introducir datos relacionados al copiar de Calc

Publicado: Mié Ene 02, 2019 2:32 pm
por Longi
Feliz año!

Supongo que las cosas no son como las entendí en un principio, y aunque sigo sin tener del todo claro lo que se pretende, si fuesen las cosas por donde creo con solo aplicar una consulta, ya tendrías los resultados que deseas (un mismo DNI puede tener varias unidades de competencia, y a su vez diferentes cualificaciones, por lo que lo que la propuesta inicial no tendría sentido ya que para el mismo DNI hay varias posibilidades).
También decir que aunque es posible el manejo de claves primarias múltiples, a mi me resulta extraño su uso, y me pierdo en la lógica que tendría que llevar, así que no te asustes si estoy diciendo burradas que no tengan mucho que ver con lo que preguntas.
Mira a ver si esta consulta te puede servir para lo que pretendes, y en su defecto, con más explicaciones iremos afinando:

Código: Seleccionar todo

SELECT "Datos_personales".*, "UnidadesDeCompetencia_Habilitadas"."Cod_UnidadCompetencia", "UnidadesDeCompetencia"."Cod_Cualificacion", "UnidadesDeCompetencia"."Denominacion_UnidadCompetencia" FROM "UnidadesDeCompetencia_Habilitadas", "Datos_personales", "UnidadesDeCompetencia" WHERE "UnidadesDeCompetencia_Habilitadas"."Nif" = "Datos_personales"."Nif" AND "UnidadesDeCompetencia_Habilitadas"."Cod_UnidadCompetencia" = "UnidadesDeCompetencia"."Cod_UnidadCompetencia"
Un saludo! ;)

Re: Introducir datos relacionados al copiar de Calc

Publicado: Vie Ene 04, 2019 2:21 pm
por apemarr
Perdón por no explicarme del todo bien. Lo que busco realmente es que la tabla (UnidadesDeCompetencia_Habilitadas) se actualice añadiendo valores (Cod_Cualificacion) que no estan en el archivo Calc y que sin embargo se encuentran en la tabla relacionada(UnidadesDeCompetencia).
Longi la consulta SELECT que has puesto me tarda demasiado en ejecutarse y creo que los tiros van mas bien por hacer un UPDATE como comentabas al principio, he modificado el anterior UPDATE que puse y lo he ejecutado en la base de datos de ejemplo y me sirve. Aqui esta el código:

Código: Seleccionar todo

UPDATE "UnidadesDeCompetencia_Habilitadas" SET "Cod_Cualificacion"=(SELECT "Cod_Cualificacion" FROM "UnidadesDeCompetencia" WHERE "UnidadesDeCompetencia"."Cod_UnidadCompetencia"="UnidadesDeCompetencia_Habilitadas"."Cod_UnidadCompetencia");
Lo que pasa es que cuando lo ejecuto en la base de datos que importa me salta el error:
1: Single value expected
Y es que en la tabla UnidadesDeCompetencia un Cod_UnidadCompetencia puede tener varios Cod_Cualificacion. Entonces, ¿cómo puedo solucionarlo?,¿Hay alguna forma de que pille solo un registro?

Re: Introducir datos relacionados al copiar de Calc

Publicado: Vie Ene 04, 2019 3:11 pm
por Longi
Buenas!

Me he permitido el cambiar las relaciones y eliminar una clave múltiple poniéndola a simple, después apliqué tu UPDATE último y parece que va bien.

Comprueba por si acaso.

Un saludo! ;)