Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Bases de datos > MySQL
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 21-07-2022
chileno chileno is offline
Miembro
 
Registrado: jun 2005
Posts: 121
Poder: 19
chileno Va por buen camino
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.
Responder Con Cita
  #2  
Antiguo 21-07-2022
Avatar de mamcx
mamcx mamcx is offline
Moderador
 
Registrado: sep 2004
Ubicación: Medellín - Colombia
Posts: 3.911
Poder: 25
mamcx Tiene un aura espectacularmamcx Tiene un aura espectacularmamcx Tiene un aura espectacular
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;
__________________
El malabarista.
Responder Con Cita
  #3  
Antiguo 22-07-2022
Avatar de duilioisola
[duilioisola] duilioisola is offline
Miembro Premium
 
Registrado: ago 2007
Ubicación: Barcelona, España
Posts: 1.734
Poder: 20
duilioisola Es un diamante en brutoduilioisola Es un diamante en brutoduilioisola Es un diamante en bruto
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 
...
Responder Con Cita
  #4  
Antiguo 22-07-2022
chileno chileno is offline
Miembro
 
Registrado: jun 2005
Posts: 121
Poder: 19
chileno Va por buen camino
ok gracias..voy probar!!
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
campos null al hacer un update desde un select gmontes SQL 3 08-06-2020 19:30:00
Actualizar campos de una Tabla cuando se actualize otra tabla RedVenom Varios 28 11-05-2011 18:19:38
actualizar un campo de una tabla en sql desde delphi josi Conexión con bases de datos 3 11-03-2008 05:37:20
Actualizar tabla buscando desde un dbgrid judit25 Conexión con bases de datos 7 19-05-2006 16:08:57
select que me mueste los campos de una tabla cahosoft Oracle 1 01-10-2004 00:02:54


La franja horaria es GMT +2. Ahora son las 11:50: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
Copyright 1996-2007 Club Delphi