PDA

View Full Version : خواندن داده از 2 جدول متفاوت



mehdad.koulab
دوشنبه 29 شهریور 1389, 11:30 صبح
سلام دوستان
من ميخوام از يه جدول فيلد ID رو بنا به شرطي بردارم و بيارم تو يه جدول ديگه با فيلدي كه ارتباط داره مقايسه كنم و مقدار يه فيلد ديگم رو بخونم و بذارم تو VB.net حالا وقتي ميخونم ايراد ميگيره كه بيش از يك مقدار ID به دست آمده ببينين جلوي شرط اولي مساوي هم ميذارم باز همين خطا رو ميده



ALTERprocedure [dbo].[SPT_TBLCDData];8
@program_type nvarchar

as
begintransaction
select Programname from TBL_CDdata
where F_IDPtype like(select ID from TBL_ProgramType
where Program_type like'%'+ @program_type +'%')
if@@ERROR=0
begin
commit
end
else
begin
rollback
end


اينم خطايي كه ميده



Msg 512, Level 16, State 1, Procedure SPT_TBLCDData, Line 6
Subquery returned more than 1 value. This is not permitted when the subquery follows =, !=, <, <= , >, >= or when the subquery is used as an expression.

behrouzlo
دوشنبه 29 شهریور 1389, 12:59 عصر
Subquery شما بیش از یک سطر را برگشت می دهد، به همین دلیل خطا می دهد.
برای حلش به جای Like از In استفاده کنید ببینید که خروجی مربوطه شما را تولید می کند یا نه. در غیر اینصورت دقیقا بگوید چیکار می خواهید بکنید

mehdad.koulab
دوشنبه 29 شهریور 1389, 13:50 عصر
سلام
نه اصلا كلا به in گير ميده قبول نميكنه

ببينيد من يه ديتا بيس دارم با 7 تا جدول حالا ميخوام اطلاعاتي رو از دوتا جدول بخونم

جدول اولم

ID , Code , Programname , F_IDPtype , F_IDCDtype , Sell , IsACtive

جدول دوم

ID , Code ,Program_type, IsActive

حالا ID جدول دوم با F_IDPtype جدوا اول ارتباط داره

حالا من ميخوام Program_type بگيرم بعد Programname رو بدم من اينجوري ميخواستم بكنم كه ID رو از جدول دوم بردارم بعد با F_IDPtype مقايسه كنم و جاهايي كه من ميخوام رو برگردنم كه اونجوري شد.

behrouzlo
دوشنبه 29 شهریور 1389, 14:52 عصر
این را تست کنید


select Programname from TBL_CDdata,TBL_ProgramType
Where F_IDPtype = TBL_ProgramType.ID And TBL_ProgramType.Program_type = @program_type