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 07-09-2012
edgar_prospero edgar_prospero is offline
Miembro
NULL
 
Registrado: mar 2012
Posts: 202
Poder: 13
edgar_prospero Va por buen camino
sumar 2 campos de la misma tabla

que hay amigos hace dias hice una consulta aqui pero mejor cambie el diseño, y ahora viene mi duda tengo una tabla en la cual meto codigos de productos a veces hay varios registros con el mismo codigo la difrerencia esta en un campo que se llama documento los cuales unos son "S" y otros "E" lo que quiero haces es que se sumen por decir los codigos as3200 con documento "E" y se resten a los codigos "as3200" con documento "S" no se si me explique quise intentar algo pero como no tengo mucha idea de mysql pues me da cero:


Código Delphi [-]
SELECT nombre, codigo, SUM(cantidad)- SUM(cantidad) AS cantidad FROM entradas  WHERE documento=documento GROUP BY codigo
Responder Con Cita
  #2  
Antiguo 07-09-2012
Avatar de look
look look is offline
Miembro
 
Registrado: sep 2007
Ubicación: The Shire
Posts: 656
Poder: 17
look Va camino a la fama
no tengo todo muy claro pero quiza te de una idea :

Código SQL [-]
SELECT nombre, codigo,
( 
  (select sum(cantidad) from entradas where documento = 'E')
  -
  (select sum(cantidad) from entradas where documento = 'S')
) as Resultado
FROM entradas
__________________
all your base are belong to us
Responder Con Cita
  #3  
Antiguo 07-09-2012
edgar_prospero edgar_prospero is offline
Miembro
NULL
 
Registrado: mar 2012
Posts: 202
Poder: 13
edgar_prospero Va por buen camino
si algo asi es lo que quiero pero has de cuenta que si tengo 5 entradas de un codigo y no tengo salidas pues el resultado seria 5 pero me pone null se puede hacer algo para mejorar eso??
Responder Con Cita
  #4  
Antiguo 07-09-2012
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
look, creo que habría que relacionar las subconsultas con la consulta principal porque si no, te dará la suma de entradas y salidas sin agrupar por código.

// Saludos
Responder Con Cita
  #5  
Antiguo 08-09-2012
Avatar de look
look look is offline
Miembro
 
Registrado: sep 2007
Ubicación: The Shire
Posts: 656
Poder: 17
look Va camino a la fama
Cita:
Empezado por roman Ver Mensaje
look, creo que habría que relacionar las subconsultas con la consulta principal porque si no, te dará la suma de entradas y salidas sin agrupar por código.

// Saludos
muy cierto amigo.
__________________
all your base are belong to us
Responder Con Cita
  #6  
Antiguo 08-09-2012
edgar_prospero edgar_prospero is offline
Miembro
NULL
 
Registrado: mar 2012
Posts: 202
Poder: 13
edgar_prospero Va por buen camino
lo hice de esta manera pero solo me da resultados correctos cuando hay cantidad en entradas y salidas si en algun codigo nomas hay de entradas me manda null

Código SQL [-]
SELECT nombre, codigo,(  (SELECT SUM(cantidad) FROM entradas WHERE documento = 'E')- (SELECT SUM(cantidad) FROM entradas WHERE documento = 'S')) AS ResultadoFROM entradas GROUP BY codigo
Responder Con Cita
  #7  
Antiguo 08-09-2012
Avatar de look
look look is offline
Miembro
 
Registrado: sep 2007
Ubicación: The Shire
Posts: 656
Poder: 17
look Va camino a la fama
Código SQL [-]
SELECT nombre, codigo,
(  
  COALESCE((SELECT SUM(cantidad) FROM entradas WHERE documento = 'E') , 0) 
  - 
  COALESCE((SELECT SUM(cantidad) FROM entradas WHERE documento = 'S') , 0) 
) AS Resultado
FROM entradas GROUP BY codigo
__________________
all your base are belong to us
Responder Con Cita
  #8  
Antiguo 08-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
O Tambien :
Código SQL [-]
SELECT nombre, codigo,
(  
  (SELECT SUM(cantidad) FROM entradas WHERE documento = 'E' and cantidad > 0) 
  - 
 (SELECT SUM(cantidad) FROM entradas WHERE documento = 'S' and cantidad > 0) 
) AS Resultado
FROM entradas GROUP BY codigo
Saludos
__________________
Siempre Novato
Responder Con Cita
  #9  
Antiguo 08-09-2012
edgar_prospero edgar_prospero is offline
Miembro
NULL
 
Registrado: mar 2012
Posts: 202
Poder: 13
edgar_prospero Va por buen camino
pues ya voy avanzando con sus consejos pero ahora el problema esta en que me suma todos los codigos de entradas y todos los codigos de salidas y ya hace la resta y lo que necesito es que si hay un codigo por ejemplo as300 me los sume y se resten a los codigos as300 y si hay otro codigo porr ejemplo ar100 haga lo mismo no se si me explico
Responder Con Cita
  #10  
Antiguo 08-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
Vamos hombre:
Código SQL [-]
SELECT nombre, codigo,
(  
  (SELECT SUM(cantidad) FROM entradas WHERE documento = 'E' and cantidad > 0 and Codigo = :cod) 
  - 
 (SELECT SUM(cantidad) FROM entradas WHERE documento = 'S' and cantidad > 0 and Codigo = :cod) 
) AS Resultado
FROM entradas GROUP BY codigo

o
Código SQL [-]
SELECT nombre, codigo,
(  
  (SELECT SUM(cantidad) FROM entradas WHERE documento = 'E' and cantidad > 0) 
  - 
 (SELECT SUM(cantidad) FROM entradas WHERE documento = 'S' and cantidad > 0) 
) AS Resultado
FROM entradas 
Where Codigo = :Cod
GROUP BY codigo

Como te guste mas.
Saludos
__________________
Siempre Novato
Responder Con Cita
  #11  
Antiguo 08-09-2012
edgar_prospero edgar_prospero is offline
Miembro
NULL
 
Registrado: mar 2012
Posts: 202
Poder: 13
edgar_prospero Va por buen camino
pues no amigo me da error de sintaxis yo le hice asi me saca el reporte pero me sigue restando todas las entradas con todas lsa salidas y el reporte si me pone todos los codigo existentes pero en el resultado todos tienen lo mismo:

Código SQL [-]
form4.tabla.SQL.Add( 'SELECT nombre, codigo, '+
'((SELECT SUM(cantidad) FROM entradas WHERE codigo>=:inicial and documento=:entradas and cantidad > 0)'+
' -(SELECT SUM(cantidad) FROM entradas WHERE codigo<=:final and documento=:salidas and cantidad > 0)'+
') AS cantidad FROM entradas GROUP BY codigo');


form4.tabla.ParamByName('inicial').ASstring:=inicial.text;
form4.tabla.ParamByName('final').ASstring:=final.Text;
form4.tabla.ParamByName('entradas').ASstring:=entradas.Text;
form4.tabla.ParamByName('salidas').ASstring:=salidas.Text;

form4.tabla.PREPARE;
form4.tabla.Active:=TRUE;
form13.informe.Preview;
Responder Con Cita
  #12  
Antiguo 08-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
No se por que codigo inicial y final si es el mismo ?
saludos
__________________
Siempre Novato
Responder Con Cita
  #13  
Antiguo 08-09-2012
edgar_prospero edgar_prospero is offline
Miembro
NULL
 
Registrado: mar 2012
Posts: 202
Poder: 13
edgar_prospero Va por buen camino
es que la consulta puede ser por un rango de codigos y dependiendo del rango que le pongan es como va a salir el reporte de existencias de cada producto
Responder Con Cita
  #14  
Antiguo 08-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
Por el tipo de codigo que tienes que no es consecutivo me parece dificil un rango, por fecha si.
Saludos
__________________
Siempre Novato
Responder Con Cita
  #15  
Antiguo 08-09-2012
edgar_prospero edgar_prospero is offline
Miembro
NULL
 
Registrado: mar 2012
Posts: 202
Poder: 13
edgar_prospero Va por buen camino
es que esta por orden de abecedario de todas formas siempre esta acomodado para quesalgan todos los registros porque en inicial seria el primero del abecedario y final pues el ultimo y en caso de que quisieran un reporte de un solo codigo nomas meten el mismo codigo en los 2 y listo asi es como se me ocurre
Responder Con Cita
  #16  
Antiguo 08-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:
Código Delphi [-]
form4.tabla.SQL.Add( 'SELECT nombre, codigo, '+
'((SELECT SUM(cantidad) FROM entradas WHERE codigo>=:inicial and codigo<=:final and documento=:entradas and cantidad > 0)'+
' -(SELECT SUM(cantidad) FROM entradas WHERE codigo>=:inicial and codigo<=:final and documento=:salidas and cantidad > 0)'+
') AS cantidad FROM entradas GROUP BY codigo');


form4.tabla.ParamByName('inicial').ASstring:=inicial.text;
form4.tabla.ParamByName('final').ASstring:=final.Text;
form4.tabla.ParamByName('entradas').ASstring:=entradas.Text;
form4.tabla.ParamByName('salidas').ASstring:=salidas.Text;

form4.tabla.PREPARE;
form4.tabla.Active:=TRUE;
form13.informe.Preview;
Saludos
__________________
Siempre Novato
Responder Con Cita
  #17  
Antiguo 08-09-2012
edgar_prospero edgar_prospero is offline
Miembro
NULL
 
Registrado: mar 2012
Posts: 202
Poder: 13
edgar_prospero Va por buen camino
con este codigo si dejo todo el rango me vuelve a sumar todas la entradas y salidas y en el reporte me aparecen todos los codigos con el mismo numero pero si uso nomas un rango me aparece bien la operacion de ese rtango pero me vuelven a aparecer todos los codigos en el reporte con ese mismo resultado
Responder Con Cita
  #18  
Antiguo 08-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
terminaremos haciendo un hilo de 200 post otra vez
Ni idea amigo.
Saludos
__________________
Siempre Novato
Responder Con Cita
  #19  
Antiguo 08-09-2012
edgar_prospero edgar_prospero is offline
Miembro
NULL
 
Registrado: mar 2012
Posts: 202
Poder: 13
edgar_prospero Va por buen camino
jajaja pues ya ibamos para eso amigo pues ni modo de todas formas gracias me diste buen empuje le seguire buscando a ver si puedo dar con lo que quiero
Responder Con Cita
  #20  
Antiguo 08-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
Algun dia terminare aprendiendo.....
Saludos
__________________
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
Consultar Duplicados en una misma tabla o con otra tabla ingabraham SQL 3 13-03-2010 12:26:13
sumar campos cmm07 Varios 2 23-03-2009 16:21:08
Filtro con 2 campos de la misma tabla janlo Conexión con bases de datos 1 28-06-2007 15:53:09
Como copiar campos en una misma tabla JefeNet Conexión con bases de datos 6 28-06-2006 11:13:01
Update de Campos en la Misma Tabla Jvilomar SQL 1 05-04-2005 17:35:05


La franja horaria es GMT +2. Ahora son las 02:52:53.


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