Foro oficial de SQL

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

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
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...
 
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
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.
 
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?
 
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
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
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...
 
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: 23
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
hola, reviviendo este tema, alguien me puede hacer el favor de cómo hacer el UPDATE de multiples campos que están en un json de un campo de una tabla?

tabla talen_contratacion que tiene un campo info_contrato y este campo es un json que tiene varios atributos,
JSON:
info_contrato
{"year": 2023, "cargo": "NIVEL 5", "celular": "xxxx", "num_cdp": "xxx", "clausula": "zzzzzzz", "mes_firma": "Febrero", "year_firma": 2023, "fecha_inicio": "3 de Febrero del 2023", "necesidadOps": "yyyyyyy", "num_contrato": 1315, "dia_firma_str"............. etc. }


para actualizar un solo atributo lo he hecho así y funciona perfectamente:

SQL:
update financiero.talen_contratacion
SET info_contrato=jsonb_set(info_contrato,'{fecha_inicio}','"1 de febrero de 2023"'::jsonb)
where (info_contrato ->> 'num_identificacion'='123'
and info_contrato ->> 'year'='2023')

como haría para actualizar varios atributos?
 
hola, reviviendo este tema, alguien me puede hacer el favor de cómo hacer el UPDATE de multiples campos que están en un json de un campo de una tabla?

tabla talen_contratacion que tiene un campo info_contrato y este campo es un json que tiene varios atributos,
JSON:
info_contrato
{"year": 2023, "cargo": "NIVEL 5", "celular": "xxxx", "num_cdp": "xxx", "clausula": "zzzzzzz", "mes_firma": "Febrero", "year_firma": 2023, "fecha_inicio": "3 de Febrero del 2023", "necesidadOps": "yyyyyyy", "num_contrato": 1315, "dia_firma_str"............. etc. }


para actualizar un solo atributo lo he hecho así y funciona perfectamente:

SQL:
update financiero.talen_contratacion
SET info_contrato=jsonb_set(info_contrato,'{fecha_inicio}','"1 de febrero de 2023"'::jsonb)
where (info_contrato ->> 'num_identificacion'='123'
and info_contrato ->> 'year'='2023')

como haría para actualizar varios atributos?
Creo que esto te puede ayudar, es una muy buena herramienta


 
Gracias toca tarjeta de crédito para 7 días de prueba
Otra muy buena opción es con chatgpt


En el prompt le pasas "query update sql server para:..." y toda la carreta de lo que necesitas

Arroja unos muy buenos resultados y sino te sirve le vas pregunta por otras opciones y te muestra otros..
 
Otra muy buena opción es con chatgpt


En el prompt le pasas "query update sql server para:..." y toda la carreta de lo que necesitas

Arroja unos muy buenos resultados y sino te sirve le vas pregunta por otras opciones y te muestra otros..
me habia olvidado de chatgpt, le tuve que pasar la estructura de la tabla y darle un ejemplo de un registro luego le pregunte el update que queria y lo hizo, excelente herramienta.
 
me habia olvidado de chatgpt, le tuve que pasar la estructura de la tabla y darle un ejemplo de un registro luego le pregunte el update que queria y lo hizo, excelente herramienta.
Amigo, quería consultarte algo pero alcance el máximo de mensajes en la pagina. Podrías escribirme al 3017540101 o darme una forma de contacto? Es una consulta sobre SQL. Gracias.
 
Hola Estimados, una consulta, resulta que tengo un caso y necesito pasar el query de arriba de filas a columnas (cada columna con el nombre AntibioticTxt respectivamente, la idea es que salga como abajo de la flecha) agfradezco su colaboracion
qwerty.JPG