ورود

View Full Version : نوشتن یک SQL



aliasghar
پنج شنبه 02 مهر 1383, 05:51 صبح
سلام
فرض کنید داده های جدول زیرا را با استفاده از یک Query از جدول خرید بدست آوردیم که بر حسب تاریخ هم مرتب شده
حالا من میخواهم با استفاده از دستورات SQL ارزش ریالی موجودی این کالا را که خرید هاش نشون داده شده بدست بیارم مثلا با فرض اینکه 450 عدد از این کالا موجود باشه و خرید ها طبق جدول زیر باشن به این صورت عمل میشه:

44000=110*400 از خرید 4
6250=125*50 از خرید 3

==> قیمت 450 عدد کالا در تاریخ تهیه گزارش 50250=6250+44000

برای حل این مشکل من از Cursor استفاده کردم ولی بخار اینکه این محاسبه بعد از انجام هر عمل خرید یا فروش یا برگشتی باید بر روی تمامی کالا های فاکتور انجام بشه
اون هم 3 بار (FIFO , LIFO , AVG ) میترسم به شدت به سیستم صدمه بزنه

و حالا دنبال روشی هستم که بتونه محاسبه را بدون استفاده از Cursor انجام بده



ممنون

AminSobati
پنج شنبه 02 مهر 1383, 16:33 عصر
دوست عزیزم،
ساختار جداول شما در اینجا تعیین کننده است. با فرض به اینکه از ساختاری مشابه جدول Order Details در دیتابیس Northwind استفاده میکنید، میشه ستونهای جدول شما رو به این شکل به Order Details ربط داد:
OrderID = شرح
UnitPrice = نرخ
Quantity = تعداد
فیلد SubTotal وجود نداره ولی ما محاسبه و ایجاد میکنیم = جمع

برای ایجاد فیلد SubTotal این Query رو استفاده میکنیم (با فرض بر اینکه OrderID برابر با 10248 باشه):


SELECT OrderID, UnitPrice, Quantity, UnitPrice*Quantity AS 'SubTotal'
FROM [Order Details] WHERE OrderID=10248

و این Query رو برای بدست آوردن جمع کل:



SELECT OrderID, SUM(UnitPrice*Quantity) AS 'MainTotal'
FROM [Order Details] WHERE OrderID=10248
GROUP BY OrderID


موفق باشید،
امین ثباتی MCSD

aliasghar
پنج شنبه 02 مهر 1383, 17:56 عصر
سلام ‏
ببخشید مثل اینکه من نتوانستم سو الم را خوب بیان کنم (آخه جواب هیچ ربطی به سوال نداره یا اینکه برای فهم من ‏احتیاج به توضیح بیشتری داره :oops: )‏

داده هایی را که در شکل ‏Ali.jpg‏ (در پست شماره یک) ملاحظه میکنید در جدولی در ‏Database‏ من ذخیره شده اند ‏فرض کنید اینها نمایش تمامی خرید های یک کالا مثل دفتر هستند
هم اکنون کالای دفتر دارای 450 عدد موجودی است.‏
من میخواهم با یک ‏Query‏ ارزش کالای دفتر را تعیین کنم ولی نمیدانم که 450 عدد دفتر که هم اکنون موجود است از ‏کدام خرید است پس طبق فرمول محاسبه ارزش باید به اندازه موجودی ( یعنی 450) از آخرین خرید ها استفاده میکنم ‏به این شکل:‏
‏1)‏ ‏400 عدد دفتر مربوط به خرید 4 است به قیمت 110 تومان ==> جمع = 44000‏
‏2)‏ ‏50 عدد دفتر مربوط به خرید 3 است با قیمت 125 تومان ==> جمع = 6250‏
پس ارزش 450 عدد دفتر موجود میشود 4400+6250 = 50250‏

حالا هدف من این است که با استفاده از ‏Query ‎‏ این عدد یعنی 50250 را محاسبه کنم‏
راستی از توجه شما متشکرم :flower:

AminSobati
پنج شنبه 02 مهر 1383, 18:51 عصر
سلام،
Query که باید نوشته بشه از نظر ساختار دقیقا همون چیزیه که براتون نوشتم، فقط تغییری که باید بدین اینه که در یک جایی (مثلا در یک فیلد دیگه در همین جدول) مقداری که از اون خرید، باقی مونده ثبت شده باشه و هر بار که دفتر فروخته میشه، شما باید از اون فیلد، تعداد فروخته شده رو کسر کنین تا بدونین که از دفترهای فلان خرید، چه تعداد باقی مونده.
امیدوارم درست متوجه سناریو شده باشم..