Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   MySQL (https://www.clubdelphi.com/foros/forumdisplay.php?f=21)
-   -   actualizar campos de una tabla desde select. (https://www.clubdelphi.com/foros/showthread.php?t=95765)

chileno 21-07-2022 19:57:36

actualizar campos de una tabla desde select.
 
hola todos.

tengo un archivo CSV y lo traspaso a una tabla con un campo extra. a este campo extra lo debo de llenar a través de una consulta de otra tabla.

Código SQL [-]
 update tablaCSV set tablaCSV.campoextra = (select producto.cod_prov from producto where producto.id_prod = tablaCSV.id_prod)

la tabla tablaCSV se debe completar todos sus registro.. no se si es la mejor manera.
necesito ayuda.
gracias.

mamcx 21-07-2022 20:57:07

Puedes usar JOINS en UPDATE, DELETE e INSERT.

En este caso:

https://www.mysqltutorial.org/mysql-update-join/

Código SQL [-]
UPDATE employees
        INNER JOIN
    merits ON employees.performance = merits.performance 
SET 
    salary = salary + salary * percentage;

duilioisola 22-07-2022 12:39:51

1. Una manera es hacerlo mediante triggers, pero tiene la contra de que ralintiza la importación, porque para cada registro debe realizar el cálculo.

2. La opción de hacerlo al final de la importación, como mencionas me gusta más, pero agregaría algo para evitar calcular los ya calculados:

Código SQL [-]
update tablaCSV 
set tablaCSV.campoextra = (select producto.cod_prov from producto where producto.id_prod = tablaCSV.id_prod)
where tablaCSV.campoextra = '' /* Solo calculo para los registros que no tienen el campo informado*/

3. Una tercera opción es no agregarlo a la tabla, sinó hacer un join o un subselect con el dato.
Esto es recomendable si quieres tener al día el dato asociado. Por ejemplo si se trata del stock, que va cambiando continuamente.

Código SQL [-]
/* Mediante SUBSELECT*/
select c.*, (select p.cod_prov from producto p where p.id_prod = c.id_prod) as campoextra from tablaCSV c
where 
...

/* Mediante JOIN (Solo aparecen registros de la tablaCSV si existe el producto) */
select c.*, p.cod_prov as campoextra 
from tablaCSV c
JOIN producto p on p.id_prod = c.id_prod
where 
...

/* Mediante LEFT JOIN (aparece cada registro de tablaCSV aunque no existe un producto con ese codigo) */
select c.*, p.cod_prov as campoextra 
from tablaCSV c
LEFT JOIN producto p on p.id_prod = c.id_prod
where 
...

chileno 22-07-2022 16:28:01

ok gracias..voy probar!!


La franja horaria es GMT +2. Ahora son las 12:08:12.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi