PDA

View Full Version : سوال: نحوه بکارگیری چندین دستور SQL در یک Stored Procedure



smirabolg
چهارشنبه 15 آبان 1387, 17:49 عصر
سلام
سناریو اینه:
از جدول 1 رکوردهای a و b استخراج می شود (Select). سپس از جدول 2 به شرط رکورد a (از جدول 1)، رکورد c گرفته می شود و از جدول 3 به شرط رکورد b (از جدول 1)، رکورد d گرفته می شود.
ضمناً در اینجا ما احتیاج به حلقه هم داریم.
من می خوام تمام این کارها درون یک Stored Procedure انجام بشه.
قبلاً از راهنمایی شما متشکرم

AminSobati
پنج شنبه 16 آبان 1387, 00:35 صبح
سلام،
نهایتا یک Query میشه، مشکل کجاست؟

s.iran
پنج شنبه 16 آبان 1387, 01:00 صبح
سلام، اگه ممکنه توضیح دهید که چه جوری میشه این کار را انجام داد. باید متغیر محلی تعریف کنیم؟
اگه دوستان در این زمینه مثالی دارند لطف کنند و یبان کنند.

smirabolg
پنج شنبه 16 آبان 1387, 07:23 صبح
سلام،
نهایتا یک Query میشه، مشکل کجاست؟

درسته یک Query می شه ولی یک Query نسبتاً پیچیده که احتمالاً احتیاج به تعریف متغیر محلی داره.
من که نتونستم بنویسمش لطفاً اگر این کار رو انجام دادید راهنمایی کنید.

AminSobati
پنج شنبه 16 آبان 1387, 15:54 عصر
اسکریپت و Dataی نمونه از جدول پست کنید لطفا

smirabolg
جمعه 17 آبان 1387, 08:28 صبح
با سلام

ببینید ما سه تا Table داریم Modules، TabModules، PortalAlias

مرحله اول: به جدول Modules یک Query می زنیم و "ModuleID" و "PortalID" رو به شرط "ModuleTitle" بدست می یاریم:




Select
ModuleID, PortalID
From dbo.Modules M
Where M.ModuleTitle = @InPa
AND M.IsDeleted = 0



که در اینجا InPa@ یک مقداری ورودی هست.





مرحله دوم: به جدول TabModules یک Query می زنیم و "TabID" رو به شرط "ModuleID" که در مرحله اول بدست آوردیم، پیدا می کنیم:






SELECT t.TabID
FROM TabModules t
WHERE t.ModuleID IN
(

SELECT m.ModuleID

FROM Modules m
Where m.ModuleTitle = @InPa
AND m.IsDeleted = 0
)






مرحله سوم: به جدول PortalAlias یک Query می زنیم و "HTTPAlias" رو به شرط "PortalID که در مرحله اول بدست آوردیم، پیدا می کنیم:






SELECT p.HTTPAlias
FROM PortalAlias p
WHERE p.PortalID IN
(

SELECT m.PortalID

FROM Modules m
Where m.ModuleTitle = @InPa
AND m.IsDeleted = 0
)





در نهایت ما باید در خروجی، دو پارامتر "TabID" و "HTTPAlias" رو داشته باشیم.



حالا من می خوام همه این سه مرحله در یک Stored Procedure انجام بشه.
البته یه راه هم می تونه استفاده از LINQ باشه. نظر شما چیه؟




لطفاً راهنمایی کنید.

کم حوصله
شنبه 18 آبان 1387, 08:57 صبح
سلام

ببین این کمکت نمیکنه



Select
T.TabID, P.HTTPAlias
From
dbo.Modules M Inner Join
dbo.TabModules T ON M.ModuleID = T.ModuleID Inner Join
dbo.PortalAlias P ON M.PortalID = P.PortalID
Where
(M.ModuleTitle = @InPa) AND
(M.IsDeleted = 0)