Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   SQL (https://www.clubdelphi.com/foros/forumdisplay.php?f=6)
-   -   consultar Stock (https://www.clubdelphi.com/foros/showthread.php?t=78481)

ebeltete 23-04-2012 20:48:16

consultar Stock
 
Hola amigosa del foro, trabajo con Delphi5 y firebird, tengo una tabla articulos y otra items donde registro los movimientos, en esta tabla items tengo campos: CODIGO_ARTICULO, SIGNO, CANTIDAD, en codigo_articulo va el codigo de articulo de la tabla articulos, en el campo signo va -1 si es una venta y +1 si es una compra y en el campo cantidad va la cantidad de articulos.
Mi pregunta es como puedo hacer una consulta para que me liste los articulos sumando (cantidad X signo), de esta manera tendria el stock de cada articulo.
Espero haya sido claro, gracias y saludos.

roman 23-04-2012 20:55:09

Quizá algo así:

Código SQL [-]
select codigo_articulo, sum(signo*cantidad)
from tabla
group by codigo_articulo

// Saludos

PepeLolo 23-04-2012 21:52:45

y porque no guardas las cantidades con el signo correspondiente (en positivo o negativo). ¿para que sirve guardar el signo en un campo distinto?...

Caro 23-04-2012 22:34:02

Cita:

Empezado por PepeLolo (Mensaje 430748)
y porque no guardas las cantidades con el signo correspondiente (en positivo o negativo). ¿para que sirve guardar el signo en un campo distinto?...

Hola PepeLolo, por lo que veo, el campo signo solo le sirve para diferenciar si es una compra o una venta, para hacer otras operaciones no tendría sentido que la cantidad tenga signo negativo. De la forma en que lo tiene, haciendo una suma de las cantidades multiplicado por el signo (esto por producto), sus compras quedarían con signo positivo y sus ventas con negativo y al hacer el sum en la consulta se restaría las ventas de las compras y obtendría el stock, tal como esta en la consulta de Román.

Saluditos

PepeLolo 24-04-2012 23:19:09

Cita:

Empezado por Caro (Mensaje 430753)
Hola PepeLolo, por lo que veo, el campo signo solo le sirve para diferenciar si es una compra o una venta, para hacer otras operaciones no tendría sentido que la cantidad tenga signo negativo. De la forma en que lo tiene, haciendo una suma de las cantidades multiplicado por el signo (esto por producto), sus compras quedarían con signo positivo y sus ventas con negativo y al hacer el sum en la consulta se restaría las ventas de las compras y obtendría el stock, tal como esta en la consulta de Román.

Saluditos

Hola Caro, eso ya lo se, pero me asalta la duda y es lo que quiero que vea ebeltete, si la explotación de la información es poder obtener el stock, no tiene sentido incluir el signo del movimiento, para ello guarda el movimiento con signo. A no ser que esa tabla la use para algo mas.;)

ebeltete 25-04-2012 23:08:11

Gracias a todos por sus respuestas, usando la consulta de Roman, esta bien pero intento hacer un left join de la tabla articulos y no logro resolverlo, no me llevo bien con group by, esto es lo que intento pero me da errror:
select codigo_articulo, sum(signo*cantidad), nombre_articulo
from tabla left join articulos on codigo_articulo=codigo
group by codigo_articulo

Casimiro Notevi 25-04-2012 23:37:38

Recuerda poner los tags al código fuente, ejemplo:

Casimiro Notevi 25-04-2012 23:40:01

Por cierto, aquí tienes un tutorial de lenguaje SQL, en este apartado explican el "group by"

roman 26-04-2012 03:04:25

Código SQL [-]
select nombre_articulo, sum(signo*cantidad)
from items
left join articulos on codigo_articulo = codigo
group by nombre_articulo

// Saludos

ebeltete 26-04-2012 14:00:17

Gracias Casimiro Notevi, Roman, PepeLolo y Caro por sus aportes.
Lo he solucionado.
Saludos


La franja horaria es GMT +2. Ahora son las 04:32:59.

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