Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 05-09-2012
edgar_prospero edgar_prospero is offline
Miembro
NULL
 
Registrado: mar 2012
Posts: 202
Poder: 13
edgar_prospero Va por buen camino
restar entre 2 tablas de mysql y mostrar en reporte

que hay amigos traigo un problemilla, resulta que estoy haciendo un proyecto de entradas y salidas y guardo los datos en mysql, hasta ahi todo bien lo que quiero hacer es hacer una consulta, por ejemplo hay un producto de codigo x ese producto tuvo 5 entradas y esta en la tabla entradas y ese mismo producto tuvo 3 salidas y esta en la tabla salidas eso quiere decir que de existencia tengo 2 del codigo x, entonces quiero que me reste los que son del mismo codigo de la tabla entradas y salidas y mostrar el resultado en un Tquickreport ojala alguien pueda orientarme
Responder Con Cita
  #2  
Antiguo 05-09-2012
Avatar de Caral
[Caral] Caral is offline
Miembro Premium
 
Registrado: ago 2006
Posts: 7.659
Poder: 25
Caral Va por buen camino
Hola
Es una resta de dos campos a dos tablas, pero sin saber los campos es dificil adivinar.
Saludos
__________________
Siempre Novato
Responder Con Cita
  #3  
Antiguo 05-09-2012
edgar_prospero edgar_prospero is offline
Miembro
NULL
 
Registrado: mar 2012
Posts: 202
Poder: 13
edgar_prospero Va por buen camino
tienes toda la razon omiti informacion importante jeje mira entradas y salidas tienen los mismos campos que son
codigo
nombre
unidad
cantidad
precio
importe

entonces mas o ,menos lo que necesito es de cada codigo sumar cantidad de cada tabala y restarlo y mostrar en el reporte (Tquickreport) codigo, nombre y existencia esta ultima la cual es el resultado de la resta
Responder Con Cita
  #4  
Antiguo 05-09-2012
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.042
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Y además de lo que comenta Caral, la segunda parte de la pregunta no tiene nada que ver con la primera, sacar un informe no tiene nada que ver con hacer un cálculo entre tablas, deberías de separar las preguntas en hilos distintos.
Responder Con Cita
  #5  
Antiguo 05-09-2012
edgar_prospero edgar_prospero is offline
Miembro
NULL
 
Registrado: mar 2012
Posts: 202
Poder: 13
edgar_prospero Va por buen camino
ok entones la que me interesa ahorita es la de sacar la resta de las 2 tablas si me pueden echar la mano en eso se los agradeceria ya lo del reporte veo si puedo ajustarlo si no pues abro otro hilo
Responder Con Cita
  #6  
Antiguo 05-09-2012
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.042
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Cita:
Empezado por edgar_prospero Ver Mensaje
tienes toda la razon omiti informacion importante jeje mira entradas y salidas tienen los mismos campos que son
codigo
nombre
unidad
cantidad
precio
importe
¿Y por qué lo tienes en 2 tablas, en lugar de en una?
Código:
codigo
nombre
unidad
cantidad
cantidad
precio
importe
tipomovimiento  (1.entrada  ||  0.salida) o también 'E' / 'S'
Incluso sin poner ese campo nuevo, si la cantidad es positiva es entrada y si la cantidad es negativa es salida.
Responder Con Cita
  #7  
Antiguo 05-09-2012
Avatar de Caral
[Caral] Caral is offline
Miembro Premium
 
Registrado: ago 2006
Posts: 7.659
Poder: 25
Caral Va por buen camino
Hola
Código SQL [-]
select codigo,  nombre,  unidad, precio, importe, sum(cantidad) as cantidad-entra 
(select codigo,  nombre,  unidad, precio, importe, sum(cantidad) as cantidad-sale from salidas)
from entradas
group by  codigo,  nombre,  unidad, precio, importe
despues en el reporte colocas un qrdb y haces la resta
a ojo, no se si funcione.
Saludos
__________________
Siempre Novato
Responder Con Cita
  #8  
Antiguo 06-09-2012
edgar_prospero edgar_prospero is offline
Miembro
NULL
 
Registrado: mar 2012
Posts: 202
Poder: 13
edgar_prospero Va por buen camino
pues asi estructure mi programa como se lleva un control por folio en numero consecutico de cada entrada y salida por eso de hacerlo en 2 tablas, y de la manera como me dices amigo caral me marca error se sintaxis
Responder Con Cita
  #9  
Antiguo 06-09-2012
Avatar de Caral
[Caral] Caral is offline
Miembro Premium
 
Registrado: ago 2006
Posts: 7.659
Poder: 25
Caral Va por buen camino
Hola
Yo en sql soy muy malo, lo que hago es sencillo.
Tengo una copia de mi BD en access el cual tiene un generador de consultas sql muy bueno.
Creo la consulta en access y luego la paso a firebird, con los cambios que necesite.
De mysql a access se puede pasar muy facilmente y ahi puedes crear las consultas muy sencillamente.
Saludos
__________________
Siempre Novato
Responder Con Cita
  #10  
Antiguo 06-09-2012
Avatar de Caral
[Caral] Caral is offline
Miembro Premium
 
Registrado: ago 2006
Posts: 7.659
Poder: 25
Caral Va por buen camino
Hola
Mira tu consulta creada por access:
Código SQL [-]
SELECT DISTINCT Entradas.Codigo, Entradas.Unidad, Salidas.Codigo, Salidas.unidad, Sum(Entradas.cantidad) - Sum(Salidas.Cantidad) AS restacantidad
FROM Entradas INNER JOIN Salidas ON Entradas.Codigo = Salidas.Codigo
GROUP BY Entradas.Codigo, Entradas.Unidad, Salidas.Codigo, Salidas.unidad;
De que funciona funciona.
Saludos
__________________
Siempre Novato
Responder Con Cita
  #11  
Antiguo 06-09-2012
edgar_prospero edgar_prospero is offline
Miembro
NULL
 
Registrado: mar 2012
Posts: 202
Poder: 13
edgar_prospero Va por buen camino
ok gracias por tu respuesta tratare de implementarlo de esa manera a ver que tal me va
Responder Con Cita
  #12  
Antiguo 06-09-2012
edgar_prospero edgar_prospero is offline
Miembro
NULL
 
Registrado: mar 2012
Posts: 202
Poder: 13
edgar_prospero Va por buen camino
hola
volviendo de nuevo por aqui lo implemente como me dijiste pero me marca un error que dice 'tablename must be defined'
Responder Con Cita
  #13  
Antiguo 06-09-2012
Avatar de Caral
[Caral] Caral is offline
Miembro Premium
 
Registrado: ago 2006
Posts: 7.659
Poder: 25
Caral Va por buen camino
Hola
Deberias poner aqui la sentencia sql que hiciste para ver si hay algun error
Saludos
__________________
Siempre Novato
Responder Con Cita
  #14  
Antiguo 06-09-2012
edgar_prospero edgar_prospero is offline
Miembro
NULL
 
Registrado: mar 2012
Posts: 202
Poder: 13
edgar_prospero Va por buen camino
ok mira el resultado lo quiero mostrar en un dbgrid y la forma que lo utilice fue la siguiente:

procedure TForm12.Button1Click(Sender: TObject);
begin

Código Delphi [-]
 tabla.Open;

       tabla.Close();
       tabla.SQL.Text:='SELECT DISTINCT Entradas.Codigo, Entradas.Unidad, Salidas.Codigo, Salidas.unidad, Sum(Entradas.cantidad) -                                    Sum(Salidas.Cantidad) AS restacantidad'+
'FROM Entradas INNER JOIN Salidas ON Entradas.Codigo = Salidas.Codigo'+
'GROUP BY Entradas.Codigo, Entradas.Unidad, Salidas.Codigo, Salidas.unidad';
       tabla.Open;
       end;
Responder Con Cita
  #15  
Antiguo 06-09-2012
edgar_prospero edgar_prospero is offline
Miembro
NULL
 
Registrado: mar 2012
Posts: 202
Poder: 13
edgar_prospero Va por buen camino
lo puse directamente en un query en un programa que se llama sqlyog y si me da resultado pero mal tengo 3 entradas y 2 salidas y deberia de dar 1 colmo resultado y me esta arrojando 0
Responder Con Cita
  #16  
Antiguo 06-09-2012
Avatar de Caral
[Caral] Caral is offline
Miembro Premium
 
Registrado: ago 2006
Posts: 7.659
Poder: 25
Caral Va por buen camino
Hola
La sentencia esta bien, estas seguro que el nombre de las tablas es Entradas y Salidas, ademas del nombre de los campos ?.
Código Delphi [-]
procedure TForm12.Button1Click(Sender: TObject);
 begin
  tabla.SQL.Text:='SELECT DISTINCT Entradas.Codigo, Entradas.Unidad, Salidas.Codigo, Salidas.unidad, '+
                     ' Sum(Entradas.cantidad)-Sum(Salidas.Cantidad) AS restacantidad '+
                     ' FROM Entradas INNER JOIN Salidas ON Entradas.Codigo = Salidas.Codigo '+
                     ' GROUP BY Entradas.Codigo, Entradas.Unidad, Salidas.Codigo, Salidas.unidad ';
  tabla.Open;
end;

Saludos
__________________
Siempre Novato
Responder Con Cita
  #17  
Antiguo 06-09-2012
edgar_prospero edgar_prospero is offline
Miembro
NULL
 
Registrado: mar 2012
Posts: 202
Poder: 13
edgar_prospero Va por buen camino
si totalmente seguro que son los nombres correctos, y esa sentencia la ejecuto en un programa que se llama sqlyog y si me arroja el resultado pero mal tengo 3 entradas y 2 salidas y me pone resultado 0
Responder Con Cita
  #18  
Antiguo 06-09-2012
Avatar de Caral
[Caral] Caral is offline
Miembro Premium
 
Registrado: ago 2006
Posts: 7.659
Poder: 25
Caral Va por buen camino
Hola
Veamos a ver si me entero:
Para mi las entradas y las salidas estan en el campo cantidad en las dos tablas, es eso lo que necesitas o es otra cosa ?.
Saludos
__________________
Siempre Novato
Responder Con Cita
  #19  
Antiguo 06-09-2012
edgar_prospero edgar_prospero is offline
Miembro
NULL
 
Registrado: mar 2012
Posts: 202
Poder: 13
edgar_prospero Va por buen camino
mira tengo 3 tablas una es productos en la cual se da de alta el producto, otra es entradas aqui se van agregando los productos que entran a la tienda por codigo y la tercer tabla es salidas las cuales se van metiendo cuando sale un producto de la tienda mi finalidad es que si tengo entradas de un producto por asi decirlo 3 ahi tengo en existencia 3 pero en cuanto entre una salida debo de tener en existencia 2.
me imagino que se tiene que restar el campo cantidad de todos los codigos iguales entres las 2 tablas(entradas y salidas), practicamente es un programa de inventario
Responder Con Cita
  #20  
Antiguo 06-09-2012
Avatar de Caral
[Caral] Caral is offline
Miembro Premium
 
Registrado: ago 2006
Posts: 7.659
Poder: 25
Caral Va por buen camino
Hola
El codogo que te di deberia restar la suma del campo cantidad de la tabla entradas con la suma del campo camtidad de la tabla salidas.
Si por cada entrada de producto la cantidad es uno y lo mismo pasa en la tabal salidas el total sera cero, eso es seguro.
Ahora si es asi lo que necesitarias es simplemente sumar la cantidad de registros, asi si te dara la cantidad de entradas y salidas.
Me sigue pareciendo que la opcion logica es poner un campo existencias en la tabla productos y hacer un sencillo update por cada entrada y salida.
saludos
Edito: Deberias ver si el te esta restando la totalidad si es asi se necesitaria generar una condicion a la sentencia sql
__________________
Siempre Novato
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
Error al restar registros Entre Tablas Lenny Varios 3 18-01-2011 14:03:33
Restar/Sumar entre DBGrid's Lenny Varios 5 02-07-2010 13:54:13
Restar registros de diferentes tablas !!! sargento elias SQL 1 24-11-2008 18:44:37
Como Restar campos de dos tablas ZLEON SQL 1 27-08-2008 07:52:00
restar horas y devolver la diferencia en tiempo entre ellas douglas OOP 1 24-10-2007 11:28:44


La franja horaria es GMT +2. Ahora son las 05:22:34.


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