Foro oficial de SQL

MædCo

@MaEdCo
12 May 2007
8,858
Hola

Necesito ayuda con un UPDATE

Tengo una tabla que la llamaré PlanoMedicamentos, algunos campos relevantes:

TipoRegistroConsecutivoTipoIdenIdentificacion...CodigoMedicamento...

el CodigoMedicamento algunos vienen mal y tengo que homologarlo con una tabla de INVIMA y haciendo otros cruces adicionales para buscar en el "sistema de información" de la empresa a cual código exactamente se refiere de acuerdo al INVIMA y me da esta tabla, (CUM= CodigoUnicoMedicamento)

CUMSfix

CodigoMedicamentoCUMCorregido

cual sería la forma para corregir los Códigos de Medicamentos en PlanoMedicamentos ?

forma1:

SQL:
update PlanoMedicamentos

set CodigoMedicamento=b.CUMCorregido

from PlanoMedicamentos a

inner join CUMSfix b on (a.CodigoMedicamento=b.CodigoMedicamento)

forma2:
SQL:
ALTER TABLE PlanoMedicamentos ADD CUMCorregido VARCHAR(20)



update PlanoMedicamentos

set CUMCorregido=CodigoMedicamento

from PlanoMedicamentos





update PlanoMedicamentos

set CUMCorregido=b.CUMCorregido

from PlanoMedicamentos a

inner join CUMSfix b on (a.CodigoMedicamento=b.CodigoMedicamento)


siento que algo no estoy haciendo bien:X3:... espero me puedan hacer el favor de colaborar...
 

_Fabian_

Lanero Regular
15 May 2009
63
Hola

Necesito ayuda con un UPDATE

Tengo una tabla que la llamaré PlanoMedicamentos, algunos campos relevantes:

TipoRegistroConsecutivoTipoIdenIdentificacion...CodigoMedicamento...

el CodigoMedicamento algunos vienen mal y tengo que homologarlo con una tabla de INVIMA y haciendo otros cruces adicionales para buscar en el "sistema de información" de la empresa a cual código exactamente se refiere de acuerdo al INVIMA y me da esta tabla, (CUM= CodigoUnicoMedicamento)

CUMSfix

CodigoMedicamentoCUMCorregido

cual sería la forma para corregir los Códigos de Medicamentos en PlanoMedicamentos ?

forma1:

SQL:
update PlanoMedicamentos

set CodigoMedicamento=b.CUMCorregido

from PlanoMedicamentos a

inner join CUMSfix b on (a.CodigoMedicamento=b.CodigoMedicamento)

forma2:
SQL:
ALTER TABLE PlanoMedicamentos ADD CUMCorregido VARCHAR(20)



update PlanoMedicamentos

set CUMCorregido=CodigoMedicamento

from PlanoMedicamentos





update PlanoMedicamentos

set CUMCorregido=b.CUMCorregido

from PlanoMedicamentos a

inner join CUMSfix b on (a.CodigoMedicamento=b.CodigoMedicamento)


siento que algo no estoy haciendo bien:X3:... espero me puedan hacer el favor de colaborar...

Hola

Si es MySql sería algo así (no recuerdo si también lo probé en Oracle y/o Postgres)

SQL:
update PlanoMedicamentos a, CUMSfix b
    set a.CUMCorregido = b.CUMCorregido
    where a.CodigoMedicamento=b.CodigoMedicamento;
 
  • Me gusta
Reacciones: MædCo

MædCo

@MaEdCo
12 May 2007
8,858
Hola

Si es MySql sería algo así (no recuerdo si también lo probé en Oracle y/o Postgres)

SQL:
update PlanoMedicamentos a, CUMSfix b
    set a.CUMCorregido = b.CUMCorregido
    where a.CodigoMedicamento=b.CodigoMedicamento;
si, así esa es la primera opción pero algo esta mal por que la ejecute dos veces por error , y la primera vez apareció XXXX registros actualizados, la segunda vez que se ejecuta según mi lógica no debería aparecer nada es decir 0(cero) registros actualizados mas sin embargo siguen apareciendo, y por eso es mi duda...
 

johansan

Lanero Reconocido
30 Ene 2004
4,485
si, así esa es la primera opción pero algo esta mal por que la ejecute dos veces por error , y la primera vez apareció XXXX registros actualizados, la segunda vez que se ejecuta según mi lógica no debería aparecer nada es decir 0(cero) registros actualizados mas sin embargo siguen apareciendo, y por eso es mi duda...

Es porque no le estás indicando buenos filtros.
Solamente buscas que exista el código, si es así, lo reemplaza, pero si ya estaba correcto, igual lo vuelve a hacer.
Agrega la sentencia para que solo aplique cuando el campo CodigoMedicamento sea diferente a CUMCorregido.

Algunos motores no permiten realizar UPDATE cuando está realizando JOIN y toca hacerlo por Subquery u otros métodos.

Proba con este.
SQL:
update PlanoMedicamentos
set CodigoMedicamento=b.CUMCorregido
from PlanoMedicamentos a
inner join CUMSfix b on (a.CodigoMedicamento=b.CodigoMedicamento
AND a.CodigoMedicamento<>b.CUMCorregido)
 
  • Me gusta
Reacciones: MædCo

nicknico2

nk2 Gamıng
Lanero VIP
11 Nov 2006
5,173
WhatsApp Image 2022-07-02 at 9.04.42 AM.jpeg

Buen día, una amistad me manda esto por si alguien sabe por favor.
 

MædCo

@MaEdCo
12 May 2007
8,858
buen día alguien me puede ayudar con esto?


tengo una tabla que ya le dí todos los permisos al usuario ureport, hasta lo puse como owner pero al querer hacer un insert asi

Código:
INSERT INTO financiero.almac_solicitud_paz_salvo
(fec_solicitud, id_persona, observacion, id_estado, id_tipo_paz_salvo, id_usuario)
VALUES('2022-09-19'::timestamp, 17962, '', 2, 3, 17);

me sale:

Código:
ERROR:  permission denied for relation almac_tipo_paz_salvo
CONTEXT:  SQL statement "SELECT 1 FROM ONLY "financiero"."almac_tipo_paz_salvo" x WHERE "id_tipo_paz_salvo" OPERATOR(pg_catalog.=) $1 FOR KEY SHARE OF x"

********** Error **********

ERROR: permission denied for relation almac_tipo_paz_salvo
SQL state: 42501
Context: SQL statement "SELECT 1 FROM ONLY "financiero"."almac_tipo_paz_salvo" x WHERE "id_tipo_paz_salvo" OPERATOR(pg_catalog.=) $1 FOR KEY SHARE OF x"

que tengo mal?
 

Zitr0

Lanero Reconocido
13 Jun 2011
895
buen día alguien me puede ayudar con esto?


tengo una tabla que ya le dí todos los permisos al usuario ureport, hasta lo puse como owner pero al querer hacer un insert asi

Código:
INSERT INTO financiero.almac_solicitud_paz_salvo
(fec_solicitud, id_persona, observacion, id_estado, id_tipo_paz_salvo, id_usuario)
VALUES('2022-09-19'::timestamp, 17962, '', 2, 3, 17);

me sale:

Código:
ERROR:  permission denied for relation almac_tipo_paz_salvo
CONTEXT:  SQL statement "SELECT 1 FROM ONLY "financiero"."almac_tipo_paz_salvo" x WHERE "id_tipo_paz_salvo" OPERATOR(pg_catalog.=) $1 FOR KEY SHARE OF x"

********** Error **********

ERROR: permission denied for relation almac_tipo_paz_salvo
SQL state: 42501
Context: SQL statement "SELECT 1 FROM ONLY "financiero"."almac_tipo_paz_salvo" x WHERE "id_tipo_paz_salvo" OPERATOR(pg_catalog.=) $1 FOR KEY SHARE OF x"

que tengo mal?
Según el error es más algo respecto a la relación que tienes con la tabla donde tienes los tipos de paz y salvo, que registros tienes en esa otra tabla?
 
  • Me gusta
Reacciones: MædCo

Agente1

Lanero Reconocido
29 Abr 2021
162
Hace rato no veo este tema, pero por el error pareciera permisos en la relación , ya probaste con la siguiente sentencia?

GRANT SELECT ON table_name TO user_name
 
  • Me gusta
Reacciones: MædCo

MædCo

@MaEdCo
12 May 2007
8,858
Según el error es más algo respecto a la relación que tienes con la tabla donde tienes los tipos de paz y salvo, que registros tienes en esa otra tabla?

los estados, tipo paz y salvo y id_persona existen en las otras tablas

INSERT INTO financiero.almac_solicitud_paz_salvo (fec_solicitud,id_persona,observacion,id_estado,id_tipo_paz_salvo,id_usuario)
VALUES ('2019-12-04 10:10:28.000',2407,'',3,2,NULL);

1663689727490.png


1663689683830.png


1663689604320.png




Hace rato no veo este tema, pero por el error pareciera permisos en la relación , ya probaste con la siguiente sentencia?

GRANT SELECT ON table_name TO user_name

como dije ya le di todos los permisos, asi:

GRANT CREATE, USAGE ON SCHEMA financiero to ureport;
GRANT ALL PRIVILEGES ON ALL TABLES IN SCHEMA financiero to ureport;
GRANT ALL PRIVILEGES ON ALL SEQUENCES IN SCHEMA financiero to ureport;
ALTER TABLE financiero.almac_solicitud_paz_salvo owner to ureport;

y nada...
 

Zitr0

Lanero Reconocido
13 Jun 2011
895
los estados, tipo paz y salvo y id_persona existen en las otras tablas

INSERT INTO financiero.almac_solicitud_paz_salvo (fec_solicitud,id_persona,observacion,id_estado,id_tipo_paz_salvo,id_usuario)
VALUES ('2019-12-04 10:10:28.000',2407,'',3,2,NULL);

Ver el archivos adjunto 527936

Ver el archivos adjunto 527935

Ver el archivos adjunto 527934





como dije ya le di todos los permisos, asi:

GRANT CREATE, USAGE ON SCHEMA financiero to ureport;
GRANT ALL PRIVILEGES ON ALL TABLES IN SCHEMA financiero to ureport;
GRANT ALL PRIVILEGES ON ALL SEQUENCES IN SCHEMA financiero to ureport;
ALTER TABLE financiero.almac_solicitud_paz_salvo owner to ureport;

y nada...


Creo que estás utilizando DBeaver, si es así, vas a intentar algo.

presiona clic derecho sobre la tabla y luego ingresas a la opción "Generate SQL" y luego la opción "INSERT"
esto te abre una ventana donde solo debes poner los datos que realmente necesitas y es una forma de validar si depronto se está poniendo algo mal por un error humano.

si ya lo solucionaste puedes dejar que fue lo que te pasó y como lo solucionaste.

1663777464307.png
 

Archivos adjuntos

  • 1663777383208.png
    1663777383208.png
    16.5 KB · Visitas: 5

MædCo

@MaEdCo
12 May 2007
8,858
Creo que estás utilizando DBeaver, si es así, vas a intentar algo.

presiona clic derecho sobre la tabla y luego ingresas a la opción "Generate SQL" y luego la opción "INSERT"
esto te abre una ventana donde solo debes poner los datos que realmente necesitas y es una forma de validar si depronto se está poniendo algo mal por un error humano.

si ya lo solucionaste puedes dejar que fue lo que te pasó y como lo solucionaste.

Ver el archivos adjunto 528043
si eso hice desde el principio, por que tenia problema con la fecha timestamp pensé que ese era el problema, ahorita se resolvió cambiando como owner de esa tabla a postgres, bien raro eso
 
  • ¡Vaya!
Reacciones: ANDRESOTE_8

Los últimos temas