PDA

View Full Version : تعداد رکورد های table



M.GhanaatPisheh
سه شنبه 19 آبان 1383, 04:47 صبح
چجوری میتونم تعداد رکورد های یه table رو برگردونم؟

hmm
سه شنبه 19 آبان 1383, 08:02 صبح
select count(*) from mytable

M.GhanaatPisheh
سه شنبه 19 آبان 1383, 08:29 صبح
ببخشید عوضی اشتباه شد
چجوری 10 رکورد پنجم یه table رو بر میگردونیم؟
:oops:

AminSobati
سه شنبه 19 آبان 1383, 11:52 صبح
دوست عزیزم،
اگر منظورتون از 10 رکورد پنجم یعنی رکوردهای 41 تا 50، باید عرض کنم چندان کار سرراستی نیست. شاید ترجیح بدین از Cursor استفاده کنین که اون راه رو همه بلدن، ولی این روش رو هم داشته باشید:
فرض کنید از جدول CUstomers فیلدهای CustomerID, CompanyName, Country رو نیاز دارید ولی برای رکوردهای 41 تا 50:

DECLARE @TempTable Table(
TID Int IDENTITY (1,1),
CustomerID VarChar(100),
CompanyName VarChar(100),
Country VarChar(100))

INSERT @TempTable(CustomerID, CompanyName, Country)
SELECT TOP 50 CustomerID, CompanyName, Country FROM Customers

SELECT TOP 10 * FROM @TempTable ORDER BY TID DESC

MiRHaDi
سه شنبه 19 آبان 1383, 20:52 عصر
سلام
اینو هم امتحان کنید

Select top 10 * from table_name
where code in (select top 50 * from table_name
order by code desc)
قربانت
بای

AminSobati
سه شنبه 19 آبان 1383, 22:47 عصر
میرهادی عزیز،
نمیدونم این Query رو خودتون تست کردین یا نه. وقتی از IN استفاده میکنید، SubQuery باید یک فیلد فقط داشته باشه به جای ستاره. ضمنا SubQuery اول Sort میشه بعد Top 50 ازش بدست میاد. شما منظورتون این بوده:


Select top 10 * from
(select top 100 percent * from
(select top 50 * from customers) as tmp order by customerid desc) as tmp2
این حالت زمانی قابل استفاده هست که جدول حتما یک ایندکس Clustered داشته باشه. ولی حالتی که در Post اولی مثال زدم، برای Heap (جدول بدون ایندکس) هم انعطاف پذیره.
موفق باشید

M.GhanaatPisheh
چهارشنبه 20 آبان 1383, 02:03 صبح
شما فرض کنید این اتفاق باید برای یه Website e-commerce اتفاق بیفته,
فرض کنید یه مشتری میخواد Page Page کالا ها رو ببینه
بهترین Solutionی که به ذهنم رسید این بود که این اتفاق توی همین tier بیفته,
طبق سناریوی بالا

دز ضمن امین جون :flower:

AminSobati
چهارشنبه 20 آبان 1383, 08:58 صبح
کار خوبی انجام میدین. فقط یک نکته: سعی کنین همیشه حد بالای Query رو نگه دارین تا از طریق اون Query بعدی رو انجام بدین، چون در این روش کار SQL Server رو راحت میکنین. مثلا وقتی بدونیم رکورد 41 دارای آی دی LAMAI باشه(حد بالا) میتونیم بنویسیم:

Select top 10 * from customers where customerid>='lamai'