PDA

View Full Version : پروسجر ثبت سفارش غذا



angel farahani
پنج شنبه 25 اردیبهشت 1393, 22:51 عصر
سلام دوستان ، لطفا به پروسجر درج سفارش غذای من توجه فرمایید . این پروسجر اونطور که من میخوام عمل نمی کنه ، این پروسجر به ازای انتخاب هر سفارش (هر غذا ) یک رکورد در جدول order و detail order ثبت میکنه ، اما من میخوام یک رکورد در جدول order و به ازای هر انتخاب غذای کاربر ، یک رکورد در جدول order detail ثبت شه .

باید اینطوری مقدار بگیره که نمی گیره :

جدول order
, orderid :88 , userid: 22 , shopid: 42 , date , orderstatus:1 , explain
thisaddress:---,detailid:30 , allcount:2 , allprice:50

جدول detailorder


detailid:30 , foodid:37 ,count ,1 , price: 30
detailid:30 , foodid:38 ,count ,1 , price: 20

ALTER Procedure [dbo].[InsertOrder]
@userid int,
@shopid int,
@orderdate date,
@orderstatus tinyint,
@explain varchar(100),
@thisaddress varchar(100),
@allcount int,
@allprice int,
@foodid int,
@count int,
@price int


AS
Declare @detailid int


INSERT INTO [orderdetail]


([foodid],[count],[price])
VALUES
(@foodid,@count,@price)


SET @detailid = SCOPE_IDENTITY()


INSERT INTO [order]
([userid]
,[shopid],[orderdate],[orderstatus],[explain],[thisaddress],[allcount],[allprice],[detailid])
VALUES
(@userid
,@shopid,GETDATE(),1,@explain,@thisaddress,@allcou nt,@allprice,@detailid);



RETURN

espootin
جمعه 26 اردیبهشت 1393, 10:34 صبح
با سلام.ببینید رابطه سفارش با غذا ها ، از اونجا که هر سفارش می تواند شامل چند غذا باشد،‌ یک رابطه یک به چند است. یعنی یک سفارش و چندین غذا.این رابطه ای که شما بوجود آوردین دقیقا برعکس است! در واقع شما باید OrderID را بعنوان کلید خارجی در جدول OrderDetail داشته باشید.برای درج به اینصورت هم می توانید از دو پروسیجر استفاده کنید ، در غیر اینصورت هم باید از Transaction استفاده کنید.

angel farahani
جمعه 26 اردیبهشت 1393, 13:11 عصر
خوب درست کردم ، من orderid را به جدول جزئیات آوردم ، پروسجر درج هم هر دو درج باید در یک پروسجر باشه ؟ یا دو پروسجر مجزا ، ببخشید من یکم مبتدی ام :خجالت:

espootin
جمعه 26 اردیبهشت 1393, 13:46 عصر
شما دو تا پروسیجر مجزا بذارید.
یکی برای ثبت سفارش.
و یکی هم برای ثبت هر غذا در OrderDetail.

در ضمن ابتدا باید سفارش را ثبت کنید و سپس غذا ها را.

موفق باشید./

angel farahani
جمعه 26 اردیبهشت 1393, 14:07 عصر
ممنونم از شما ، انجام دادم اگر مشکل داشتم تو همین پست مطرح میکنم ، اصل کارم اینه که سبد خرید رو تو سشن نگه دارم و در آخر که کاربر سفارش رو تایید کرد با پروسجر در پایگاه ثبت کنم .