Introducir datos relacionados al copiar de Calc

Discute sobre las herramientas de la base de datos
Responder
apemarr
Mensajes: 4
Registrado: Vie Dic 21, 2018 1:08 pm

Introducir datos relacionados al copiar de Calc

Mensaje 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
OpenOffice 4.1.1 en Windows 7 / LibreOffice 6.1 en Windows 7
Longi
Mensajes: 810
Registrado: Dom Ene 20, 2013 9:05 pm
Ubicación: Ourense, Galicia, España

Re: Introducir datos relacionados al copiar de Calc

Mensaje 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!
Openoffice 4.1.7, en Windows 10
Libreoffice 6.4.2, en Windows 10
apemarr
Mensajes: 4
Registrado: Vie Dic 21, 2018 1:08 pm

Re: Introducir datos relacionados al copiar de Calc

Mensaje 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
OpenOffice 4.1.1 en Windows 7 / LibreOffice 6.1 en Windows 7
RMG
Mensajes: 3884
Registrado: Mar Nov 17, 2009 6:59 am
Ubicación: Valencia - España

Re: Introducir datos relacionados al copiar de Calc

Mensaje 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
OpenOffice 4.1.15 y LibreOffice 6.2.4.2 en W-10, y LibreOffice 4.1.6.2 en Open Suse 13.1(VirtualBox)
apemarr
Mensajes: 4
Registrado: Vie Dic 21, 2018 1:08 pm

Re: Introducir datos relacionados al copiar de Calc

Mensaje 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.
Adjuntos
Habilitados_ejemplo.zip
(6.24 KiB) Descargado 203 veces
OpenOffice 4.1.1 en Windows 7 / LibreOffice 6.1 en Windows 7
Longi
Mensajes: 810
Registrado: Dom Ene 20, 2013 9:05 pm
Ubicación: Ourense, Galicia, España

Re: Introducir datos relacionados al copiar de Calc

Mensaje 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! ;)
Openoffice 4.1.7, en Windows 10
Libreoffice 6.4.2, en Windows 10
apemarr
Mensajes: 4
Registrado: Vie Dic 21, 2018 1:08 pm

Re: Introducir datos relacionados al copiar de Calc

Mensaje 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?
OpenOffice 4.1.1 en Windows 7 / LibreOffice 6.1 en Windows 7
Longi
Mensajes: 810
Registrado: Dom Ene 20, 2013 9:05 pm
Ubicación: Ourense, Galicia, España

Re: Introducir datos relacionados al copiar de Calc

Mensaje 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! ;)
Adjuntos
Habilitados_ejemplo.7z
(6.11 KiB) Descargado 203 veces
Openoffice 4.1.7, en Windows 10
Libreoffice 6.4.2, en Windows 10
Responder