PDA

View Full Version : کمک در نوشتن یک sp



malakootian
سه شنبه 29 آذر 1390, 12:45 عصر
با سلام
برنامه من به صورت زیر است:
1- جدول اصلی فاکتورها شامل (کد خریدار-شماره فاکتور-تاریخ)
2- جدول فرعی فاکتوره شامل(قیمت-تعداد-کد کالا-نوع کالا)
3-جدول مشخصات خریدار
توضیح : نوع کالا می تواند از عدد 1 تا 4 باشد که نشان دهنده 4 نوع کالاست
4- جدول مشخصات کالای نوع 1
5- جدول مشخصات کالای نوع 2
6- جدول مشخصات کالای نوع 3
7- جدول مشخصات کالای نوع 4
حالا می خوام با یک sp کد خریدار را به پروسیجر بدهم و اطلاعات زیر را داخل یک گرید نشان بدهم:
فیلدهای برگشتی برای نمایش در گرید:
1-نام خریدار
2- نام کالا
3- تعداد
4- قیمت
با ذکر این نکات که
1-در یک فاکتور فروش امکان اینکه از یک نوع کالا چند محصول در فاکتور باشد وجود دارد
2- و در یک فاکتور امکان اینکه از هر 4 نوع کالا واز هرکدام چند محصول وجود داشته باشد نیز هست
لطفا راهنماییم کنید
با تشکر

Reza_Yarahmadi
سه شنبه 29 آذر 1390, 18:22 عصر
طراحی جدولهاتون به نظر مشکل داره!! چه نیازی به جدا کردن 4 جدول مشخصات کالا از هم هست؟
به هر حال یکی از راه حلها میتونه استفاده از Union بصورت زیر باشه
Select
C.CustomerName, G.GoodName,
I.GoodCount, I.GoodPrice
From
BaseInvoice BI INNER JOIN Invoice I
ON BI.ID = I.BaseID
INNER JOIN Customers C
ON BI.CustomerCode = C.Code
INNER JOIN GOODDetail_1 G
ON I.GoodKind = 1 AND I.GoodCode = G.Code
Where
C.Code = @Code

UNION ALL

Select
C.CostumerName, G.GoodName,
I.GoodCount, I.GoodPrice
From
BaseInvoice BI INNER JOIN Invoice I
ON BI.ID = I.BaseID
INNER JOIN Customers C
ON BI.CustomerCode = C.Code
INNER JOIN GoodDetail_2 G
ON I.GoodKind = 2 AND I.GoodCode = G.Code
Where
C.Code = @Code

UNION ALL

Select
C.CostumerName, G.GoodName,
I.GoodCount, I.GoodPrice
From
BaseInvoice BI INNER JOIN Invoice I
ON BI.ID = I.BaseID
INNER JOIN Customers C
ON BI.CustomerCode = C.Code
INNER JOIN GoodDetail_3 G
ON I.GoodKind = 3 AND I.GoodCode = G.Code
Where
C.Code = @Code

UNION ALL

Select
C.CostumerName, G.GoodName,
I.GoodCount, I.GoodPrice
From
BaseInvoice BI INNER JOIN Invoice I
ON BI.ID = I.BaseID
INNER JOIN Customers C
ON BI.CustomerCode = C.Code
INNER JOIN GoodDetail_4 G
ON I.GoodKind = 4 AND I.GoodCode = G.Code
Where
C.Code = @Code