Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » Mysql »

Actualizar campo de otra tabla

Estas en el tema de Actualizar campo de otra tabla en el foro de Mysql en Foros del Web. Saludos y gracias de atemano para todos los que con su dedicación y paciencia nos prestan tan valiosos concejos. Tengo dos tablas: clientes y facturas, ...
  #1 (permalink)  
Antiguo 16/12/2014, 12:46
Avatar de heberthm  
Fecha de Ingreso: noviembre-2013
Ubicación: Cali
Mensajes: 65
Antigüedad: 11 años
Puntos: 1
Actualizar campo de otra tabla

Saludos y gracias de atemano para todos los que con su dedicación y paciencia nos prestan tan valiosos concejos.

Tengo dos tablas: clientes y facturas, mi propósito es poder ir restando el valor del saldo ubicado en la tabla facturas desde el campo valor_total de la tabla clientes,

La fórmula es la siguiente: Saldo = total_pagar - abono

aquí mi el SQL:

Código SQL:
Ver original
  1. SELECT C.total_pagar, F.Abono, F.saldo FROM clientes F.facturas;
  2.  UPDATE facturas SET F.saldo = C.total_pagar  -  NEW.abono;
  3.  WHERE C.clientes = F.facturas;


Esta actualización no me funciona, no me graba ningún valor.
__________________
Hebeth Mazuera

Última edición por gnzsoloyo; 23/12/2014 a las 08:57
  #2 (permalink)  
Antiguo 23/12/2014, 08:51
 
Fecha de Ingreso: diciembre-2014
Mensajes: 5
Antigüedad: 9 años, 11 meses
Puntos: 0
Respuesta: Actualizar campo de otra tabla

¿Puede ser que estés comparando en el WHERE el ID del Cliente con el ID de la Factura, en lugar de con el ID del Cliente EN la Factura?

Sin poner las columnas que tiene cada tabla, a bote pronto es lo más que te puedo decir...
Si puedes, añade un poco más de info, estructura de las dos tablas, relaciones entre ellas y eso, porque creo que por ahi iran los tiros.
  #3 (permalink)  
Antiguo 24/12/2014, 04:16
(Desactivado)
 
Fecha de Ingreso: enero-2013
Mensajes: 289
Antigüedad: 11 años, 10 meses
Puntos: 10
Respuesta: Actualizar campo de otra tabla

mírate los triggers
http://code.tutsplus.com/articles/in...ers--net-12226
  #4 (permalink)  
Antiguo 29/12/2014, 09:39
Avatar de heberthm  
Fecha de Ingreso: noviembre-2013
Ubicación: Cali
Mensajes: 65
Antigüedad: 11 años
Puntos: 1
Respuesta: Actualizar campo de otra tabla

Gracias a Hachector y a moginn por su colaboración, lo que deseo es poder actualizar el campo saldo desde otra tabla la estructura de las tablas son las siguientes:

Tabla clientes

Id_cliente
cedula ----------- PK
fecha_inicial
fecha_final
nombre
apellido1
apellido2
matricula_inmobiliaria
Telefono
direccion_inmueble
direccion_cliente
Valor_credito
Tasa_interes
Valor_interes
Total_pagar
Mes_prestamo


Tabla facturas

No_factura
cedula ------------PK
dias
mes
año
mes_plazo
año_plazo
abono_interes
abono_capital
saldo
mora
dias_trascurridos
Estado

La actualización la tengo de esta forma:

Código MySQL:
Ver original
  1. SELECT C.total_pagar, F.Abono, F.saldo FROM clientes F.facturas;
  2.  UPDATE facturas SET F.saldo = C.total_pagar  -  NEW.abono;
  3.  WHERE C.cedula = F.cedula;
__________________
Hebeth Mazuera

Última edición por gnzsoloyo; 29/12/2014 a las 09:48
  #5 (permalink)  
Antiguo 29/12/2014, 09:52
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 17 años
Puntos: 2658
Respuesta: Actualizar campo de otra tabla

Código MySQL:
Ver original
  1. SELECT C.total_pagar, F.Abono, F.saldo FROM clientes F.facturas;
  2. UPDATE facturas SET F.saldo = C.total_pagar  -  NEW.abono;
  3.      WHERE C.cedula = F.cedula;
Esto sólo poría funcionar (y hay que analizar el caso) en un TRIGGER, ya que NEW y OLD sólo existen en el contexto de un TRIGGER.
Fuera de él, no funcionará.
A mi entender el proceso completo tyiene una estructura de datos mal diseñada...

¿Podrías explicar cómo funciona el que un valor esté en la tabla de clientes, y lo que debas actaulzair esté en la de facturas?
¿Existe realmente una única factura por cliente?
Porque ese update sólo funcionaría o tendría algún sentido si ese fuese el caso...
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #6 (permalink)  
Antiguo 29/12/2014, 09:53
Avatar de heberthm  
Fecha de Ingreso: noviembre-2013
Ubicación: Cali
Mensajes: 65
Antigüedad: 11 años
Puntos: 1
consulta me genera un producto cartesiano

Saludos a todos, Mi propósito es generar un reporte FPDF a través de una consulta SQL la cual toma campos de dos tablas (clientes, facturas) y debe mostrar las personas que están al día con los pagos mensuales. aquí la consulta:
Código MySQL:
Ver original
  1. SELECT  C.fecha_inicial, C.nombre, C.cedula, C.matricula_inmobiliaria, C.apellido1, C.apellido2, C.telefono, C.valor_credito, C.direccion_inmueble, C.direccion_cliente,  C.tasa_interes, C.valor_interes, C.total_pagar,
  2. F.dias, F.estado, F.cedula, F.abono_interes, F.mes
  3. FROM  facturas F  INNER JOIN clientes C    
  4. ON (C.cedula = F.cedula)  AND  (F.estado='Al dia')
El campo "estado " es el que sirve como filtro para poder obtener los clientes que cumplen con la condición deseada.

EL problema es que me genera un reporte con un producto cartesiano no deseado. Cuál será mi error?.
__________________
Hebeth Mazuera
  #7 (permalink)  
Antiguo 29/12/2014, 09:56
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 17 años
Puntos: 2658
Respuesta: Actualizar campo de otra tabla

No abras diferentes hilos para tratar un mismo problema.
Lo que te pasa es precisamente lo que te mencionaba en el post anterior: No tienes una relacion 1:1, por tanto la cedula es insuficiente para realziar esa acción.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #8 (permalink)  
Antiguo 29/12/2014, 10:49
Avatar de heberthm  
Fecha de Ingreso: noviembre-2013
Ubicación: Cali
Mensajes: 65
Antigüedad: 11 años
Puntos: 1
Respuesta: Actualizar campo de otra tabla

Gracias gnzsoloyo por tu colaboración, creo que tengo un error en la estructura de la tabla cliente con el campo saldo el cual debe ir en la tabla facturas

Código SQL:
Ver original
  1. SELECT C.total_pagar, F.Abono, F.saldo FROM clientes F.facturas;
  2.  UPDATE facturas SET F.saldo = C.total_pagar  -  NEW.abono;
  3.  WHERE C.cedula = F.cedula;
__________________
Hebeth Mazuera
  #9 (permalink)  
Antiguo 29/12/2014, 10:58
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 17 años
Puntos: 2658
Respuesta: Actualizar campo de otra tabla

A mi entender tienes un fallo de diseño algo mas profundo:
El saldo de un cliente debe ser calculable, y no almacenado (los campos calculables están prohibidos en el modelo relacional), y su valor es equivalentemente a la suma de compras menos la suma de pagos realizados. Eso es un saldo de cuenta.
En tu caso deberías tener una tabla de clientes, una de facturas, donde el cliente efectivamente aparece por su identificador, y una tabla de pagos, caja u otro documento que implique el pago. Esa tabla debería vincularse con las facturas en una relación 1:N (si hay mas de un pago imputado a la factura), tal que puedas sacar el saldo por factura, o bien el saldo de cuenta, indistintamente.
¿Se entiende?
En ese contexto no necesitas almacenar nada, simplemente se calcula en una query adecuada.

Una de las reglas fundamentales del diseño de estructuras de datos es que una BBDD debe tener la capacidad de proveer datos de un modo flexible. Es decir, que diferentes conjuntos de información se puedan obtener de la misma estructura, vistos de diferentes ángulos. En tu modelo eso no está sucediendo.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)

Última edición por gnzsoloyo; 29/12/2014 a las 18:31
  #10 (permalink)  
Antiguo 29/12/2014, 18:19
Avatar de heberthm  
Fecha de Ingreso: noviembre-2013
Ubicación: Cali
Mensajes: 65
Antigüedad: 11 años
Puntos: 1
Respuesta: Actualizar campo de otra tabla

Gracias gnzsoloyo por tu oportuna ayuda
__________________
Hebeth Mazuera

Etiquetas: campo, genera, join, producto, select, sql, tabla, update
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 22:16.