سلام به همه دوستان گلم.
میخواستم ببینم آیا میشه مثلا به طور مستقیم رکورد چهارم جدول رو دربیاریم؟؟
یعنی یه select بنویسیم که چهارمین رکورد جدول رو در بیاره؟؟
ممنون![]()
سلام به همه دوستان گلم.
میخواستم ببینم آیا میشه مثلا به طور مستقیم رکورد چهارم جدول رو دربیاریم؟؟
یعنی یه select بنویسیم که چهارمین رکورد جدول رو در بیاره؟؟
ممنون![]()
سلام دوست عزیزم،
از توابع Ranking استفاده کنین و به هر رکورد یک شماره بدین
سلام
به این مثال توجه کنید:
SELECT*FROM
(SELECT ROW_NUMBER()OVER(ORDERBY CustomerID)AS Rank
,CustomerID,CompanyName, Country
FROM Customers) tmp
WHERE Rank=4
CustomerID کلید اصلی است.ابتدا مرتب کردم سپس رکورد چهارم انتخاب شده.
موفق باشید
با سلام و ارادت.
دوستان واساتید اگه در باره این موضوع با توچه به نبودن موضوعی مشابه در فروم و نیاز ضروری بعضی از دوستان (مثلا خودم) یه توضیح مختصر اما کامل و جامع بدهند و یک کد مثال ساده به زبان C# عنایت کنند ، بسیار سپاسگزار می شم.
اگه به زبان vb.net هم بزارید که واسه دوستانی که با زبان vb کار می کنند فکر می کنم عالی باشه.
با تشکر.
بله...
کد کامل
کد به زبان C# که در پاین هم کل برنامه رو برای دانلود اظافه می کنم.
using System;
using System.Data;
using System.Configuration;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.Data.SqlClient;
public partial class _Default : System.Web.UI.Page
{
SqlConnection cnn = new SqlConnection();
SqlCommand cmd = new SqlCommand();
SqlDataAdapter sda = new SqlDataAdapter();
DataSet ds = new DataSet();
protected void Button1_Click1(object sender, EventArgs e)
{
cmd.Parameters.Clear();
cnn.ConnectionString = "Data Source=AMIN-A45ADB7E50\\SQLEXPRESS;Initial Catalog=admin_university;Integrated Security=True";
cmd.CommandText = "Select * From student ";
cmd.Connection = cnn;
sda.SelectCommand = cmd;
cnn.Open();
sda.Fill(ds, "amin");
object[] valuez = new Object[2];
SqlDataReader reader = cmd.ExecuteReader(CommandBehavior.CloseConnection) ;
reader.Read();
reader.GetValues(valuez);
TextBox1.Text = valuez[0].ToString();
reader.Close();
}
}
آخرین ویرایش به وسیله aminghaderi : جمعه 02 مرداد 1388 در 18:58 عصر
یک راه بهتر و کامل تر!
دسترسی به تک تک فیلد ها و رکورد های .
کد به زبان C# که در پاین هم کل برنامه رو برای دانلود ضمیمه می کنم.
انشاالله مثمرثمر قرار گیرد.
using System;
using System.Data;
using System.Configuration;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.Data.SqlClient;
public partial class _Default : System.Web.UI.Page
{
SqlConnection cnn = new SqlConnection();
SqlCommand cmd = new SqlCommand();
SqlDataAdapter sda = new SqlDataAdapter();
DataSet ds = new DataSet();
protected void Button1_Click1(object sender, EventArgs e)
{
cmd.Parameters.Clear();
cnn.ConnectionString = "Data Source=AMIN-A45ADB7E50\\SQLEXPRESS;Initial Catalog=admin_university;Integrated Security=True";
cmd.CommandText = "Select * From student ";
cmd.Connection = cnn;
sda.SelectCommand = cmd;
cnn.Open();
sda.Fill(ds, "amin");
cmd.ExecuteReader();
cnn.Close();
//----------------------------------- Amalyat Angheyad Be Textbox ---------------------------*
DataRow dr = ds.Tables["amin"].Rows[2];
//"amin" name jadvale ast ke tavassote dataset sakhted va "Rows" ham ke moshakhase shomare
// radefe jadvale.
TextBox1.Text = dr["family"].ToString();
//"family" ham asme fielde az database ast.
//-------------------------------------------------------------------------------------------*
}
}
ممنون از دوستان گلم بابت نظراتشون.
نیلوفر جان من کدتونو امتحان کردن اما خطا میگره فکر کنم تابع رو نمیشناسه!! پیغامش اینه:
'ROW_NUMBER' is not a recognized function name.
aminghaderi جان ممنون که میخوای کمک کنی اما داداشی من مشکلم با خوندن اطلاعات با کد نویسی نیست میخوام با استفاده از دستور اسکیوال یه رکورد را واکشی کنم.
سلام.
اتفاقا یک مساله هست که برای حل دقیقا نیاز به Ranking Function دارد می توانید استفاده کنید.
http://www.barnamenevis.org/sh...d.php?t=172333
وبلاگ من (Advanced SQL Querying)
وبلاگ من (Advanced SQL Querying)
اره دوست عزیز من اط SQL Server 2000 استفاده میکنم
میشه یه راه حلی بدید که بشه توی SQL Server 2000 ازش استفاده کرد و از پیچیدگی کمتری برخوردار باشه
ممنون میشم
پیچیدگی کمتری داشته باشد!؟ مگر توابع Ranking و ماده ی Over چه پیچیده گی دارند این ها ساخته شدند که کا را ساده تر کنند.
بدست آوردن هر چیزی یک قیمتی دارد.
لطفا دقیقا مشخص کنید هدفتان از این کار چیست.
در 2000 یک راه حل وجود دارد که یکمی دشوار و محدود می باشد (نسبت به دستورات Rank در 2005)
آن هم استفاده از Cursor است.
وبلاگ من (Advanced SQL Querying)
لینک برای آموزش Rank
http://www.persiadevelopers.com/arti...operators.aspx
وبلاگ من (Advanced SQL Querying)
من میخوام یه رکورد دلخواه رو از هر جای جدول واکشی کنم
مثلا رکرد 5 یا 100 یا هر چی؟
خوب، این کار خیلی سختی نیست.
با cursor تا حال کار کردید می دانید چیست؟
cursor یک اشاره گر (همان طوری که از اسمش پیداست) می باشد که به یک مجموعه (result set) اشاره می کند و شما می توانید با استفاده از یک while و یک cursor و یک جدول موفق برنامه ای ایجاد کنید که به هر یک از سطر های نتیجه query یک شماره سطر بدهد سپس یک query دیگر بنویسید که شامل یک where باشد به شکل زیر:
WHERE Row_ID=5
WHERE Row_ID=100
وبلاگ من (Advanced SQL Querying)
وبلاگ من (Advanced SQL Querying)
بالاخره یک راه حل ساده برای این مساله پیدا کردم.
متاسفانه من SQL Sever 2000 را نصب شده ندارم و هر چی کد می نویسم در 2005 است.
یک راه حل ساده پیدا کردم. در این روش با استفاده از تابع Identity به هر یک از سطر های جدول یک شناسه داده می شود که از یک شروع شده و یکی یکی افزایش پیدا می کند.
کد دستور و طریقه استفاده آن به قرار زیر است. امید وارم که راضی شده باشید!
USE tempdb
IF object_Id(N'#temp') is not null
Drop table #temp
SELECT [Name],ID_Num = IDENTITY(int, 1, 1)
INTO #temp
FROM (
SELECT [Name]='Ali' UNION ALL
SELECT 'Reza' UNION ALL
SELECT 'Hasan' UNION ALL
SELECT 'Mohammd'
)D
select * from #temp
where ID_num=3 --Result must be "Hasan"
نتیجه اجرای query فوق
Name ID_Num
------- -----------
Hasan 3
وبلاگ من (Advanced SQL Querying)
ممنون msalim جان این کدتونو اجرا کردم و جواب داد.
اما چندان ازش سر در نیاوردم؟ شما یه جدول ساختید و مقدار دهی کردید و بعد هم جستجو؟
میشه توضیح بدید
من در خدمت هستم.
ولی چرا بین پست هایتان این قدر فاصله است؟
خوب، من از تابع IDENTITY () INTO استفاده کردم. شما کافی است که به جای Derived Table (جدول مشتق شده) ی D دستورات query خود (که فکر کنم به سادگی select * from tbl باشد) را قرار دهید.
برای درک کامل query فوق باید به مطالب زیر آشنا باشید:
1-SELECT INTO
2-TEMPORARY TABLE
3-Derived Table
4-Identity Into
وبلاگ من (Advanced SQL Querying)
یکی از دوستان یعنی آقای ASKaffash یک روش جالب دیگری را مطرح کردند.
در صورتی که نتیجه query شما بر اساس یک ستون مشخص مرتب شده باشد شما می توانید از روش زیر استفاده کنید. که هم ساده تره و هم جالب تر.
من فرض گرفتم که شما سطر سه را از جدول زیر می خواهید بازیابی کنید.
-- I imagine you want to achieve third row from this query.
SELECT TOP 1 *
FROM (
SELECT TOP 3 *
FROM (
SELECT [Name]='Ali' UNION ALL
SELECT 'Hasan' UNION ALL
SELECT 'Mohammad' UNION ALL
SELECT 'Reza'
)D1
)D2
ORDER BY [Name] DESC
داده های جدول مورد نظر
Name
--------
Ali
Hasan
Mohammad
Reza
(4 row(s) affected)
نتیجه بعد از اجرای query فوق.
Name
--------
Mohammad
(1 row(s) affected)
وبلاگ من (Advanced SQL Querying)