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

Como rebajar de una tabla, con otras tablas involucradas

Estas en el tema de Como rebajar de una tabla, con otras tablas involucradas en el foro de SQL Server en Foros del Web. Tengo 4 tablas involucradas en este SP Insumo : ID, Nombre,Cantidad_Stock Producto: ID, Nombre Insumo_Producto: ID, Producto ID, Insumo ID,Cantidad Comanda_Detalle: ID, Producto ID, Comanda ...
  #1 (permalink)  
Antiguo 29/04/2008, 12:59
 
Fecha de Ingreso: octubre-2003
Mensajes: 101
Antigüedad: 20 años, 6 meses
Puntos: 0
Como rebajar de una tabla, con otras tablas involucradas

Tengo 4 tablas involucradas en este SP

Insumo : ID, Nombre,Cantidad_Stock
Producto: ID, Nombre
Insumo_Producto: ID, Producto ID, Insumo ID,Cantidad
Comanda_Detalle: ID, Producto ID, Comanda ID,Cantidad


Ejemplificando:

Insumos en stock : 1, Tallarines, 100
2, Salsa, 50

Producto (Platos) : 1, Tallarines con Salsa
Insumo_Producto (Composicion del Plato) : 1, Tallarines con Salsa, Tallarines, 0.5
, Salsa, 0.30

Comanda_Detalle (Venta Plato): 1, Tallarines con Salsa, 89(Nro.Comanda), 2 (se vendieron 2 platos)

Siginifica que como se vendieron 2 platos de tallarines, que debo descontar de la tabla Insumos con los ingredientes ocupados.
En este caso 1 unidad de tallarin y 0,60 de salsa. (como se vendieron 2 platos se multiplica lo que se ocupa de tallarin y salsa, es decir 0,5 y 0,3 respectivamente)



En el @ID se envia el numero de la comanda desde NET, en este caso el 89. De ahí se obtienen los platos vendidos y por ende los ingredientes a descontar.


esto lo que llevo hasta el momento , pero me falta completarlo.
please help

ALTER procedure [dbo].[sp_comanda_descuentainsumo]
(
@ID int
)
as
SELECT IP.id
,IP.producto_id
,CD.cantidad
,PR.nombre
,IP.insumo_id
,IM.id
,IM.nombre
,IM.subtipo_umedida
,IP.cantidad

FROM tbl_insumo_producto IP

LEFT OUTER JOIN tbl_comanda_detalle CD on CD.producto_id = IP.producto_id
LEFT OUTER JOIN tbl_producto PR on PR.id = CD.producto_id
LEFT OUTER JOIN tbl_insumo IM on IM.id = IP.insumo_id

where CD.comanda_id = @ID


UPDATE [tbl_insumo]
SET
[cantidad] = ¿????
WHERE IM.id = IP.insumo_id
  #2 (permalink)  
Antiguo 29/04/2008, 14:35
Avatar de flaviovich  
Fecha de Ingreso: agosto-2005
Ubicación: Lima, Peru
Mensajes: 2.951
Antigüedad: 18 años, 8 meses
Puntos: 39
Re: Como rebajar de una tabla, con otras tablas involucradas

Bueno, hay algunas cosas que no estan claras, seria mejor que chequees lo que has escrito.
Pero segun entendi la actualizacion seria algo asi:
Código:
UPDATE tbl_insumo
SET Cantidad_Stock = Cantidad_Stock - IP.cantidad/CD.cantidad
FROM tbl_comanda_detalle CD
    INNER JOIN tbl_insumo_producto IP ON CD.id=IP.id AND CD.producto_id=IP.producto_id
    INNER JOIN tbl_insumo IM ON IP.id=IM.id
WHERE CD.comanda_id = @ID
Espero haberte ayudado.
__________________
No repitamos temas, usemos el Motor de busquedas
Plantea bien tu problema: Ayúdanos a ayudarte.
  #3 (permalink)  
Antiguo 29/04/2008, 14:42
 
Fecha de Ingreso: octubre-2003
Mensajes: 101
Antigüedad: 20 años, 6 meses
Puntos: 0
Re: Como rebajar de una tabla, con otras tablas involucradas

Cita:
Iniciado por flaviovich Ver Mensaje
Bueno, hay algunas cosas que no estan claras, seria mejor que chequees lo que has escrito.
Pero segun entendi la actualizacion seria algo asi:
Código:
UPDATE tbl_insumo
SET Cantidad_Stock = Cantidad_Stock - IP.cantidad/CD.cantidad
FROM tbl_comanda_detalle CD
    INNER JOIN tbl_insumo_producto IP ON CD.id=IP.id AND CD.producto_id=IP.producto_id
    INNER JOIN tbl_insumo IM ON IP.id=IM.id
WHERE CD.comanda_id = @ID
Espero haberte ayudado.

al ejecutarlo me sale

Mens 209, Nivel 16, Estado 1, Procedimiento sp_comanda_descuentainsumo, Línea 27
El nombre de columna 'Cantidad_Stock' es ambiguo.

???

manuel
  #4 (permalink)  
Antiguo 29/04/2008, 16:09
Avatar de Thumper  
Fecha de Ingreso: agosto-2004
Ubicación: Jesús María - Lima - Perú
Mensajes: 270
Antigüedad: 19 años, 8 meses
Puntos: 6
Re: Como rebajar de una tabla, con otras tablas involucradas

Eso te sale porque en tu select tienes 2 o + tablas q tienen el mismo campo, tienes q analizar de que tabla debes tomar el valor.

De esta parte:

Cita:
FROM tbl_comanda_detalle CD
INNER JOIN tbl_insumo_producto IP ON CD.id=IP.id AND CD.producto_id=IP.producto_id
INNER JOIN tbl_insumo IM ON IP.id=IM.id
WHERE CD.comanda_id = @ID
__________________
Martín Alexis Valdivia S.
-----------------------------
"Quisiéramos cambiar el mundo, pero Dios no nos daría el código fuente." CAP
"Si Saber No Es Un Derecho, Seguro Será Un Izquierdo." WD
  #5 (permalink)  
Antiguo 29/04/2008, 19:04
Avatar de horizonte  
Fecha de Ingreso: octubre-2005
Ubicación: A 50cm del Monitor(el angulo depende del estado de animo)
Mensajes: 148
Antigüedad: 18 años, 6 meses
Puntos: 1
Re: Como rebajar de una tabla, con otras tablas involucradas

Cita:
Iniciado por ManuelV Ver Mensaje
al ejecutarlo me sale

Mens 209, Nivel 16, Estado 1, Procedimiento sp_comanda_descuentainsumo, Línea 27
El nombre de columna 'Cantidad_Stock' es ambiguo.

???

manuel
Si estas usando una version anterior a la 9(2005), debes usar lo siguiente:

UPDATE tbl_insumo
SET Cantidad_Stock = IM.Cantidad_Stock - (IP.cantidad/CD.cantidad)
FROM tbl_comanda_detalle CD
INNER JOIN tbl_insumo_producto IP ON CD.id=IP.id AND CD.producto_id=IP.producto_id
INNER JOIN tbl_insumo IM ON IP.id=IM.id
WHERE CD.comanda_id = @ID

Ahora no lo puedo probar porque no tengo el SQL a mano, pero deberia funcionar(o al menos compilar).

Saludos.
__________________
Mientras tanto aqui, en la Gran Ciudad...
Una nueva hora,...Comienza
:Zzz:
  #6 (permalink)  
Antiguo 29/04/2008, 20:28
 
Fecha de Ingreso: octubre-2003
Mensajes: 101
Antigüedad: 20 años, 6 meses
Puntos: 0
Re: Como rebajar de una tabla, con otras tablas involucradas

Cita:
Iniciado por horizonte Ver Mensaje
Si estas usando una version anterior a la 9(2005), debes usar lo siguiente:

UPDATE tbl_insumo
SET Cantidad_Stock = IM.Cantidad_Stock - (IP.cantidad/CD.cantidad)
FROM tbl_comanda_detalle CD
INNER JOIN tbl_insumo_producto IP ON CD.id=IP.id AND CD.producto_id=IP.producto_id
INNER JOIN tbl_insumo IM ON IP.id=IM.id
WHERE CD.comanda_id = @ID

Ahora no lo puedo probar porque no tengo el SQL a mano, pero deberia funcionar(o al menos compilar).

Saludos.
muchas gracias me resulto perfecto

gracias a los que me postearon
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

SíEste tema le ha gustado a 1 personas




La zona horaria es GMT -6. Ahora son las 21:32.