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

Restar dos campos de dos tablas

Estas en el tema de Restar dos campos de dos tablas en el foro de Bases de Datos General en Foros del Web. Hola!! Tengo un problemilla en una base de datos que estoy creando. La base de datos es para controlar el stock que hay en un ...
  #1 (permalink)  
Antiguo 10/09/2010, 12:59
 
Fecha de Ingreso: septiembre-2010
Mensajes: 3
Antigüedad: 13 años, 7 meses
Puntos: 0
Restar dos campos de dos tablas

Hola!!

Tengo un problemilla en una base de datos que estoy creando.

La base de datos es para controlar el stock que hay en un almacen de camisetas.
He creado tres tablas que tienen los siguientes campos:

PRODUCTOS: Referencia, marca, descripcion.
ENTRADAS: Id_E, Referencia, fecha, color, talla, cantidad_E
SALIDAS: Id_S, Referencia, fecha, color, talla, cantidad_S

Van enlazadas por la referencia. En la tabla productos, la referencia es la llave primaria, en las entradas y las salidas he puesto como llave primaria un id, ya que asi me dejara repetir varias entradas o salidas de una misma referencia.

Cada referencia, va a tener, 4 tallas y 8 colores, esto puede variar.

En primer lugar hago consultas para saber el total de las entradas y me las suma perfectamente, al igual me pasa en las salidas.

El problema lo tengo cuando quiero hacer la consulta para saber el stock que tengo, es decir, la consulta que quiero hacer es que me reste la cantidad de entradas(cantidad_E) menos la cantidad de salidas(cantidad_S).

De este modo esta consulta me tendria que agrupar por tallas colores y el stock de cada referencia. Deberia quedar asi.

Referencia color talla stock
544 blanco L 10
544 blanco M 8
544 negro L 10

Espero que me ayuden, gracias!!!!!
  #2 (permalink)  
Antiguo 10/09/2010, 14:06
Colaborador
 
Fecha de Ingreso: enero-2007
Ubicación: México
Mensajes: 2.097
Antigüedad: 17 años, 4 meses
Puntos: 447
Respuesta: Restar dos campos de dos tablas

Hola gusanchis, creo que ya te contesté en otro foro. pero va de nuevo. si ya tienes las consultas que te agrupan las entradas y las salidas puedes utilizarlas como insumo para una nueva consulta, es decir algo como esto:

SELECT Entradas.Referencia, Entradas.Color, Entradas.Talla, SUM(Entradas.stock - Salidas.Stock) FROM
(
**aquí pones la consulta que tienes para sacar tu tabla de entradas**
) Entradas
INNER JOIN
(
**aquí pones la consulta que tienes para sacar tu tabla de salidas**
) Salidas
ON
Entradas.Referencia = Salidas.Referencia and
Entradas.Color = Salidas.Color and
Entradas.Talla = Salidas.Talla
GROUP BY
Entradas.Referencia, Entradas.Color, Entradas.Talla

Saludos
Leo.
  #3 (permalink)  
Antiguo 10/09/2010, 17:02
 
Fecha de Ingreso: septiembre-2010
Mensajes: 3
Antigüedad: 13 años, 7 meses
Puntos: 0
Respuesta: Restar dos campos de dos tablas

Hola Leo!!

Muchisimas gracias!! ya he conseguido restar los campos de entradas y salidas, ahora tengo un pequeño problema.

Si introduzco una entrada, pero esta no tiene ninguna salida, es decir, no tiene nada que le reste, en la consulta que he realizado anteriormente, esta entrada no me aparece, y deberia aparecerme porque es stock que queda en el almacen.
De que manera lo puedo hacer para que me aparezca?

Aqui te mando la consulta que he realizado como tu me has dicho:

SELECT ENTRADAS.Referencia, Entradas.Color, Entradas.Talla, SUM(ENTRADAS.Suma_E - SALIDAS.Suma_S)
FROM [SELECT ENTRADAS.Referencia, ENTRADAS.Color, ENTRADAS.Talla, Sum(ENTRADAS.Cantidad_E) AS Suma_E
FROM ENTRADAS
GROUP BY ENTRADAS.Referencia, ENTRADAS.Color, ENTRADAS.Talla
ORDER BY ENTRADAS.Referencia]. AS Entradas INNER JOIN [SELECT SALIDAS.Referencia, SALIDAS.Color, SALIDAS.Talla, Sum(SALIDAS.Cantidad_S) AS Suma_S
FROM SALIDAS
GROUP BY SALIDAS.Referencia, SALIDAS.Color, SALIDAS.Talla
ORDER BY SALIDAS.Referencia]. AS Salidas ON (ENTRADAS.Talla = SALIDAS.Talla) AND (ENTRADAS.Color = SALIDAS.Color) AND (ENTRADAS.Referencia = SALIDAS.Referencia)
GROUP BY ENTRADAS.Referencia, ENTRADAS.Color, ENTRADAS.Talla;


Un saludo!!!

Gus

Última edición por gusanchis; 10/09/2010 a las 17:14
  #4 (permalink)  
Antiguo 21/01/2012, 10:51
 
Fecha de Ingreso: enero-2009
Mensajes: 16
Antigüedad: 15 años, 4 meses
Puntos: 0
Respuesta: Restar dos campos de dos tablas

tengo el mismo problema con una consulta de estas y estoy buscando por aqui otra forma de realizarlo pero sin la necesidad de hacer tres consultas, para no afectar el planificador del motos de la BD, pero no veo la forma de hacerlo.

una aclaracion sobre esta consulta, segun mi analisis, no hay necesidad de sumar en el select exterior las Sum(ENTRADAS.Suma_E - SALIDAS.Suma_S) por que si o si siempre van existir un registro para cada conjunto de ENTRADAS.Referencia, Entradas.Color, Entradas.Talla entonces no hay necesidad de sumarlo.

creo que la consulta que esta de esta forma:

SELECT ENTRADAS.Referencia, Entradas.Color, Entradas.Talla, SUM(ENTRADAS.Suma_E - SALIDAS.Suma_S)
FROM [SELECT ENTRADAS.Referencia, ENTRADAS.Color, ENTRADAS.Talla, Sum(ENTRADAS.Cantidad_E) AS Suma_E
FROM ENTRADAS
GROUP BY ENTRADAS.Referencia, ENTRADAS.Color, ENTRADAS.Talla
ORDER BY ENTRADAS.Referencia]. AS Entradas INNER JOIN [SELECT SALIDAS.Referencia, SALIDAS.Color, SALIDAS.Talla, Sum(SALIDAS.Cantidad_S) AS Suma_S
FROM SALIDAS
GROUP BY SALIDAS.Referencia, SALIDAS.Color, SALIDAS.Talla
ORDER BY SALIDAS.Referencia]. AS Salidas ON (ENTRADAS.Talla = SALIDAS.Talla) AND (ENTRADAS.Color = SALIDAS.Color) AND (ENTRADAS.Referencia = SALIDAS.Referencia)
GROUP BY ENTRADAS.Referencia, ENTRADAS.Color, ENTRADAS.Talla;


quedaria de esta forma:


SELECT ENTRADAS.Referencia, Entradas.Color, Entradas.Talla, ENTRADAS.Suma_E - SALIDAS.Suma_S AS Existencias
FROM [SELECT ENTRADAS.Referencia, ENTRADAS.Color, ENTRADAS.Talla, Sum(ENTRADAS.Cantidad_E) AS Suma_E
FROM ENTRADAS
GROUP BY ENTRADAS.Referencia, ENTRADAS.Color, ENTRADAS.Talla
ORDER BY ENTRADAS.Referencia]. AS Entradas INNER JOIN [SELECT SALIDAS.Referencia, SALIDAS.Color, SALIDAS.Talla, Sum(SALIDAS.Cantidad_S) AS Suma_S
FROM SALIDAS
GROUP BY SALIDAS.Referencia, SALIDAS.Color, SALIDAS.Talla
ORDER BY SALIDAS.Referencia]. AS Salidas ON (ENTRADAS.Talla = SALIDAS.Talla) AND (ENTRADAS.Color = SALIDAS.Color) AND (ENTRADAS.Referencia = SALIDAS.Referencia)



Un saludo!!!

si estoy mal que alguien me corriga. gracias.

Etiquetas: campos, dos, restar, tablas
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 08:27.