PDA

View Full Version : خروجی دو sp



nastaran_s
سه شنبه 04 بهمن 1390, 01:14 صبح
سلام. می خواهم موجودی انبار رو بدست بیارم به اینصورت که ورودی انبار از طریق خرید کالا های صورت گرفته است که وارد انبار شده
81342
از این انبار تعدادی کالا به مکان های مختلف انتقال داده شده
81343
که براساس مدل کالا تعداد خروجی کالا رو بدست اوردم
81344
برای بدست آوردن موجودی انبار باید کالاهای خروجی از انبار رو از کالاهای خریداری شده کم کنم
چطور می تونم اطلاعات دو sp یکجا داشته باشم؟؟؟
در انجمن این پاسخ رو پیدا کردم اما برای یک ردیف!!!
http://barnamenevis.org/showthread.php?310043-%D8%AA%D8%B1%DA%A9%DB%8C%D8%A8-%D8%AE%D8%B1%D9%88%D8%AC%DB%8C-%DA%86%D9%86%D8%AF-%D9%BE%D8%B1%D9%88%D8%B3%DB%8C%D8%AC%D8%B1-%D8%AF%D8%B1-%D9%82%D8%A7%D9%84%D8%A8-%DB%8C%DA%A9-%D8%AC%D8%AF%D9%88%D9%84&highlight=%D8%A7%D8%AF%D8%BA%D8%A7%D9%85+%D8%AF%D9 %88+select
ممنون می شم دوستان راهنمایی کنن.

mohandes ehsan
سه شنبه 04 بهمن 1390, 14:47 عصر
شما بايد بين قطعات وانبار يك رابطه موجوديتي بنام qtyداشته باشيد كه اين رابطه خودش يك جدول ميشود كه كليد اصلي انبار وقطعات به عنوان كليد خارجي قرار ميگيرد كه خريد قطعات باعث ميشود موجودي انبار افزايش و فروش قطعات qtyرا كاهش ميدهد.

یوسف زالی
سه شنبه 04 بهمن 1390, 17:20 عصر
سلام.
اگر اصرار به این روش دارید یکی از راهها اینه که یک جدول بگیرید و نتیجه SP رو اونجا نگه دارید:
insert into TBL
exec SP ...

حالا برای هر SP یک جدول دارید که می تونید محاسباتتون رو از اون استخراج کنید.
موفق باشید.

nastaran_s
سه شنبه 04 بهمن 1390, 22:36 عصر
شما بايد بين قطعات وانبار يك رابطه موجوديتي بنام qtyداشته باشيد كه اين رابطه خودش يك جدول ميشود كه كليد اصلي انبار وقطعات به عنوان كليد خارجي قرار ميگيرد كه خريد قطعات باعث ميشود موجودي انبار افزايش و فروش قطعات qtyرا كاهش ميدهد.
ممنون . لطفاً در رابطه با qty بیشتر توضیح بدید؟مرسی

tiphooo
سه شنبه 04 بهمن 1390, 22:59 عصر
اگر فرض را بر این بگذاریم که جدول رسیدهای شما (کالای ورودی به انبار) Table1 باشد و جدول حواله ها (خروجی کالا از انبار) Table2 برای به دست آوردن موجودی کالاها نیاز به دو SP ندارید با یک Sp به راحتی قابل انجام است به صورت زیر
SELECT Resid.ProductModelId,(SELECT ProductName FROM Table1 WHERE ProductModelId=Resid.ProductModelId) ProductName,(SELECT ModelName FROM Table1 WHER ProductModelD=Resid.ProductModelId) ModelName,Resid.SumResid-Havle.SumHavale NumberOfOneProduct FROM (
SELECT ProductModelId,SUM(Number) SumResid FROM Table1 GROUP BY ProductModelId)Resid
LEFT OUTER JOIN
(SELECT ProductModelId,SUM(Number) SumHavaleh FROM Table2 GROUP BY ProductModelId)Havaleh
ON Resid.ProductModelId=Havaleh.ProductModelId
البته باید این را درنظر بگیرید که موجودی کالا در انبارهای مختلف با هم فرق می کند و چون شما در حواله ها تفکیک انبار نداشتید من شرط آن را قرار ندادم و اینکه موجودی باید بر اساس تاریخ باشدبنابراین شما باید در هر ردیف رسید و حواله تاریخ صدور آن را داشته باشید و شرط آن را هم در Query فوق اعمال کنید و گرنه عملا می شود فهمید که شما دارید پروژه دانشجویی می نویسید نه یک برنامه کاربردی و دیگر اینکه به قول دوستمون که می گه که یک جدول میانی برای نگهداری موجودی کالا داشته باشیم با عرض معذرت باید بگویم این کار Redundancy ( نگهداری اطلاعات زیادی) است یعنی مادامی که اطلاعات مورد نیاز را می توان از جداول واکشی کرد به هیچ وجه نباید از فیلدها و جداول اضافی استفاده کرد البته این در برنامه های کاربردی بیشتر ملموس و ایرادات آن خود را نشان می دهد و شاید برای شما کار راه انداز باشد و با استفاده جدول میانی شما به 4 Trigger نیز دارید برای حذف و اضافه در جداول رسید و حواله