مشکل در count sql (امین)

desiran

Member
من یه کدی داشتم یه به این صورت هست
کد:
Select count(ID) As Counter from tale
خوب این کد می یاد یه سری رکورد رو شمارش می کننه بر فرض 2000 تا خوب من می خوام بگم که اگه دیدی تعداد اونها از 50 تا بیشتر شد . دیگه این کارو انجام نده من همون 50 تا برام کافیه.

فقط دلیلش برای سرعت
 

MDP

Well-Known Member
این همون کار رو میکنه!

کد:
Declare @c Cursor
Set @c = Cursor For Select id From tale
Open @c
Declare @Counter,@x int
set @Counter = 0
Fetch Next From @c into @x
while @Counter < 50
	Begin
Declare @text nvarchar(30)
		Select @text=id From tale
Print @text
		set @counter = @counter +1
	End
Close @c
Deallocate @c
 

desiran

Member
این همون کار رو میکنه!

کد:
Declare @c Cursor
Set @c = Cursor For Select id From tale
Open @c
Declare @Counter,@x int
set @Counter = 0
Fetch Next From @c into @x
while @Counter < 50
	Begin
Declare @text nvarchar(30)
		Select @text=id From tale
Print @text
		set @counter = @counter +1
	End
Close @c
Deallocate @c
این باچه زبانیه من asp می خوام. میشه بیشتر رویه این توضیح بدی . من گفتم چی می خوام دیگه .
می خوام یه سری رکورد رو که در دیتا بیس هست دو بشمرم با مقادیر یکسان .
برای مثال تویه تیبل رکورد هایی رو که در گروه A هستند رو بشمر . بر فرض 1000 تا رکورد که در گروه A هستند . من فقط می خوام این بشمره و بعد وقتی به 100 رسید دیگه ادامه نده بگه که از 100 تا بیشتر هست و اگر از 100 تا کمتر بگه شنتا هستن.
 

desiran

Member
درباره set rowcount در SQL جستجو کنید.
این set rowcount رو سرچ کردم یه چیزایی اومد دسم ولی کار نکرد . ببین درست می نویسم

set rowcount 10 Select count(ID) As Counter from tale where group = 1


این error رو می ده

Invalid SQL statement; expected 'DELETE', 'INSERT', 'PROCEDURE', 'SELECT', or 'UPDATE'.
 

MDP

Well-Known Member
این به زبان T-sql هست شما این کامند رو می تونید به SQL server بفرستید اون براتون انجام میده!
 

mazoolagh

Active Member
خوب میتونین stored procedure استفاده کنین - مثل همین کدی که جناب bmw گذاشتن

ولی چیزی که برای من سئوال هست اینه که count در کدی که نوشتین فقط یک مقدار برمیگردونه و نه بعنوان مثال 2000 تا که بخواین محدودش کنین.
 

MDP

Well-Known Member
سلام!

من مسعود هستم!

من اون کد رو برای مثال نوشتم من که نمی دونستم ایشون چی لازم دارن!

درضمن امکانش هم هست که این دسترات در stored procedure نوشته شه که یک Table برگردونه!
 

MDP

Well-Known Member
set rowcount این دوستور کارش شماردن تعداد سطر هاست و به هیچ درد شما نمی خوره از اون استفاهده نکنید!

می تونید به جای این کار ها این رو هم استفاده کنید که یه ایراد داره اونم اینه که اگه شما کمتر از 50 تا رکورد داشته باشید(برای مثال) اون مقدار باقی مونده NULL بر میگرده

کد:
Select Top 50  abc From tale order by abc
 
آخرین ویرایش:

mehranzand

Member
set rowcount این دوستور کارش شماردن تعداد سطر هاست و به هیچ درد شما نمی خوره از اون استفاهده نکنید!

می تونید به جای این کار ها این رو هم استفاده کنید که یه ایراد داره اونم اینه که اگه شما کمتر از 50 تا رکورد داشته باشید(برای مثال) اون مقدار باقی مونده NULL بر میگرده

کد:
Select * Top 50  From tale

دوست عزیز یه خورده مطالعه بفرمایید .
set rowcount تنظیم کننده تعداد سطری است که می خواهید در هر بار اجرا برگشت داده بشود.
 

desiran

Member
ولش کنید . مشکلم با یه الگریتم دیگه حل کردم . از همه گی ممنون. :d
 

MDP

Well-Known Member
دوست عزیز یه خورده مطالعه بفرمایید .
set rowcount تنظیم کننده تعداد سطری است که می خواهید در هر بار اجرا برگشت داده بشود.


بله چشم ولی من به شما پیشنهاد می کنم مطالعه بفر مایید!


set rowcount دقیقا یک تابع سیستمی از گروه DDL Action هاست که کارش دقیقا شمارش تعداد سطر هایی خروجی دستور Select هست که به صورت ورودی دریافت می کنه!

لطفا راهنمایی غلط نفرمایید!
 

mehranzand

Member
بله چشم ولی من به شما پیشنهاد می کنم مطالعه بفر مایید!


set rowcount دقیقا یک تابع سیستمی از گروه DDL Action هاست که کارش دقیقا شمارش تعداد سطر هایی خروجی دستور Select هست که به صورت ورودی دریافت می کنه!

لطفا راهنمایی غلط نفرمایید!

اول شما یک تست بکن دوست خوب ...
حتی در مورد custom paging بهترین راه حل است و خیلی موارد دیگه!
کارش شمارش و برگشت یک عدد نیست بلکه تعیین رکورد هایی است که باید شمارش بشود.
بنده از روی عادت جواب پست هایی رو میدهم که در پروژه هام برخورد داشتم.

موفق باشید
 
آخرین ویرایش:

MDP

Well-Known Member
سلام!

عزیز بحث رو ادامه نده من جواب های خودم هم تست می کنم بعد میزارم اینجا!

شما اگه فکر می کنید که میتونید با این دستور کاری بکنید نمونش رو بزارید!

نمونه کد من هم هست!
 

mehranzand

Member
سلام!

عزیز بحث رو ادامه نده من جواب های خودم هم تست می کنم بعد میزارم اینجا!

شما اگه فکر می کنید که میتونید با این دستور کاری بکنید نمونش رو بزارید!

نمونه کد من هم هست!

برگشت 10 رکورد از آخرین رکورد های جدول news با فرض اینکه نیوز ما الان 2000 رکورد اطلاعات ثبت شده را داراست!

set rowcount 10
select * from News order by NewsDate desc

در مورد کد شما هم اشکالی بهش وارد نبود اما همیشه بهترین راه رو انتخاب کن.
امیدوارم متوجه شده باشی اینبار!
 
  • Like
Reactions: MDP

MDP

Well-Known Member
ُسلام!

دوست من فرض اینه که ممکنه 2000 تا رکورد موجود نباشه!

ایشون می خواستن اگه 50 تا رکورد موجود باشه یا نباشه این عمل صورت بگیره!

یعنی اینکه اگه مثلا رکورد 45 خالی بود دیگه ادامه نده!

ممنون بحث جالبی شد!

آموزشی شد!

.:مسعود:.
 

جدیدترین ارسال ها

بالا