PDA

View Full Version : قرار دادن نتيجه سلکت قبلي در يک متغير



bftarane
شنبه 16 دی 1391, 16:37 عصر
سلام.
من يه همچين کوئري مي خوام داشته باشم لطفاً درستش رو به من بگيد چه جوريه؟
create procedure ddd
@NewsCatID int,
@ParentId int
as
begin
select @ParentId=ParentId,Name as 'sub' from tbl_newscat where NewsCatID=@NewsCatID


select Name as 'cat' from tbl_newscat where NewsCatID=@ParentID
end
ولي خطاي زير رو به من داده
A SELECT statement that assigns a value to a variable must not be combined with data-retrieval operations.

يعني يه جدول دارم با فيلدهاي NewsCatID,ParentId,Name و
با داشتن NewsCatId مي خوام اولName و ParentId رو به دست بيارم بعد بر اساس ParentId اين دفعه Name پرنت رو به دست بيارم.

mohsen24000
شنبه 16 دی 1391, 17:32 عصر
خب شما چرا از Join استفاده نمی کنید...

create procedure ddd
@NewsCatID int,
as
begin
select a.Name as 'sub',b.name as 'cat' from tbl_newscat a
inner join tbl_newscat b
on a.parentid=b.newscatid and a.newscatid=@newscatid


end

bftarane
شنبه 16 دی 1391, 18:03 عصر
سلکت داره از يه جدول انجام ميشه.
در واقع يه حالت بازگشتي اينجا وجود داره.
در جدولم منوهايي که ParentId شون صفره سطح اولن، و هر رکوردي داراي يه ParentId هست مثلاً 0، 1، 2 ، ...
يعني من بخوام با همون روش متغير انجام بدم نميشه؟

bftarane
شنبه 16 دی 1391, 18:21 عصر
روش آقاي mohsen24000 جواب ميده ولي اگه کسي بلده با روش متغير هم ياد بده.

mohsen24000
شنبه 16 دی 1391, 18:30 عصر
create procedure ddd
@NewsCatID int,
@sub nvarchar(1000) output,
@cat nvarchar(1000) output
as
begin
declare @ParentId int
select @ParentId=ParentId,@sub=Name from tbl_newscat where NewsCatID=@NewsCatID
select @cat=Name from tbl_newscat where NewsCatID=@ParentID
end