PDA

View Full Version : سوال: سلکت از جدول دلخواه



ozzy_mra
یک شنبه 02 آبان 1389, 15:04 عصر
سلام
من یه جدول دارم به نام Tables که اسم جداول دیتا بیسم درونش قرار داره که دارای دو فیلد ID,TableNAme می باشد
می خوام سلکتم به صورتی باشه که از هر جدولی که می خوام عملیات سلکت انجام بشه
مثلاً مقدار ID یک دارای تیبل نیم Orders هست
من از این دستور استفاده می کنم

select * from (select TableName From Tables where ID=1)
این دستور قراره مثلاً خروجی کوئری زیر رو داشته باشه

SELECT * FROM Orders
که البته کوئری بالایی اشتباهه
می خوام بدونم اصلاً همچین کاری شدنیه و اگر شدنیه به چه صورت باید استفاده کنم؟
ممنونم

behrouzlo
یک شنبه 02 آبان 1389, 15:22 عصر
من دقیقا نمی دانم شما به چه منظور می خواهید اینکار را انجام دهید. برای اینکار می توانید از Dynamic Sp استفاه کنید به شکل زیر:


Declare @Query Nvarchar(Max) = 'Select * From ' + (select TableName From Tables where ID=1)
EXECUTE sp_executesql @Query

حمیدرضاصادقیان
یک شنبه 02 آبان 1389, 15:26 عصر
سلام.این به روش شما اشتباهه.شما باید Dynamic query بسازید.
مثال :


DECLARE @DetName varchar(30)
if @typ=1 set @DetName='p_otpt'
else if @typ=2 set @DetName='p_inpt'
else if @typ=3 set @DetName='p_sput'
else if @typ=4 set @DetName='p_pput'
else if @typ=5 set @DetName='p_pish'
else if @typ=6 set @DetName='p_garb'
else if @typ=7 set @DetName='p_cnvt'
if @typ=5 exec(' Select *,0 as sanad,-1 as Code_Asli,0 as Naghd,0 as User_tas from '+@DetName+' order by code' )
else exec(' Select *,(select doc from f_sanad_doc where sanad='+@DetName+ '.sanad) as doc from '+@DetName+' order by code' )

این یک Stored procedure هست که براساس id که بهش پاس میدم نوع جدول رو مشخص میکنه بعد داخل Select اونو اجرا میکنه.