Ver Mensaje Individual
  #2 (permalink)  
Antiguo 16/11/2012, 01:58
quimfv
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Sabadell
Mensajes: 4.897
Antigüedad: 16 años, 1 mes
Puntos: 574
Respuesta: restar a varios registros distintas cantidad

Platos
idPlato PK autoinc
NomPlato
Descripcion

FormadoPor
idIngrediente PK autoinc
idPlato FK
cantidad

Stock
idStock PK autoinc
idIngrediente FK
tipo (Entrada "E", Salida "S")
cantidad
fecha
precio

Ingredientes
idIngrediente PK autoinc
NomIngrediente

Como minimo necesitas estas cuatro tablas.

Luego, para cada plato vendido debes hacer un INSERT INTO en Stock de tipo Salida para cada ingrediente de la receta del plato


Para el plato con id=1
Código MySQL:
Ver original
  1. INSERT INTO Stock
  2.     SELECT f.idIngrediente,
  3.                  "S" as tipo,
  4.                   f.cantidad,
  5.                   date() as fecha,
  6.                   0 as precio
  7.       FROM FormadoPor f
  8.         WHERE f.idPlato=1


Esto te da el inventario sin valoración
Código MySQL:
Ver original
  1. SELECT i.NomIngrediente,
  2.     SUM(If(s.tipo="E",s.cantidad,0)) as entradas,
  3.     SUM(If(s.tipo="S",s.cantidad,0)) as salidas,
  4.     SUM(If(s.tipo="E",s.cantidad,0)-If(s.tipo="S",s.cantidad,0)) as saldo
  5. FROM Stock s INNER JOIN Ingredientes i
  6.    ON s.idIngrediente=i.idIngrediente

Seguramente hay mas formas de hacerlo
__________________
Quim
--------------------------------------------------
Ayudar a ayudar es una buena práctica!!! Y da buenos resultados.