View Full Version : از هر کالا چند تا فروش رفته؟
Developer Programmer
یک شنبه 27 تیر 1389, 10:05 صبح
جداول ساده شده برنامه به این صورتن:
FoodGroup
-------------
GroupID
GroupName
Food
---------
GroupID (fk)
FoodID
FoodName
Factor
-----------
FactorID
BillDate
FactorDetail
-------------
FactorID (fk)
FoodID
Qty
میخوام بگم از هر کالا در فلان تاریخ، چقدر فروش رفته.
میدونم که اول باید تمام فاکتورهای اون تاریخ رو بدست بیارم و بعد با Group by FoodID بگم از هر کالا چند تا فروش رفته.
ولی Query اش رو نمی تونم پیاده کنم.
محمد سلیم آبادی
یک شنبه 27 تیر 1389, 11:23 صبح
1. FactorID ها را محدود به اون تاریخ خاص می کنید.
2. نتیجه حاصله را با جدول FactorDetail اتصال میدین.
3. گروه بندی می کنید بر اساس FoodID و Count اش را می گیرین.
4. دوباره نتیجه را با جدول Foods اتصال می دین تا نام غذا نیز بدست آید.
SELECT FoodName, Cnt
FROM Food F
JOIN
(
SELECT FoodID, SUM(Qty) AS Cnt
FROM
(
SELECT FactorID
FROM Factors
WHERE BillDate = YourDateTime
) AS D
JOIN
FactorDetail F
ON F.FactorID = D.FactorID
GROUP BY FoodID
) AS D
ON F.FoodID = D.FoodID;
Developer Programmer
یک شنبه 27 تیر 1389, 21:42 عصر
با سپاس از زحمتی که کشیدین من هم از جدول موقت استفاده کردم.
Set NoCount ON;
IF OBJECT_ID('MyTemp','U') is not null
Drop table myTemp;
Select BillDate,Qty,FoodName,GroupName,D.FoodID
Into myTemp
From Factor f
Inner join FactorDetail d on f.FactorID=d.FactorID
Inner Join Food on food.FoodID=d.FoodID
Inner Join FoodGroup g on Food.GroupID=G.GroupID
Where BillDate <='1389/04/27'
Select Sum(Qty) as Total,FoodID,FoodName,GroupName
From myTemp
Group by FoodID,FoodName,GroupName
محمد سلیم آبادی
شنبه 02 مرداد 1389, 00:28 صبح
1. این جدول دائمی است نه موقت.
2. نیازی به این کار وجود نداره. یعنی بعد از ماده ی WHERE کوئری گروه بندی انجام بدین. پیشنهاد می کنم به بحث Logical Order در Query مراجعه کنید.
vBulletin® v4.2.5, Copyright ©2000-1403, Jelsoft Enterprises Ltd.