PDA

View Full Version : خواندن اطلاعات بصورت random از بانک اطلاعاتی(با کدهایی که پیدا کردم مشکل دارم)



csharpdoost
سه شنبه 27 فروردین 1392, 12:54 عصر
یه جدول با کلید اصلی Autonumber دارم. میخوام بصورت رندم از این جدول رکورد بخونم. اما با کدهایی که با جستجو بدست اوردم مشکل دارم :


SELECT TOP (10) * FROM MyTable
// ORDER BY NEWID()
// SELECT column FROM table
//ORDER BY RANDOM()
//LIMIT 1
// select top 1 percent * from [tablename] order by newid()

// SELECT column FROM table
//ORDER BY RAND()
//LIMIT 5

با همه این کدها امتحان کردم اما همشون خطا میدن . نمیدونم چرا.

tooraj_azizi_1035
سه شنبه 27 فروردین 1392, 13:03 عصر
SELECT TOP 10 Id, Name FROM customerNames ORDER BY NEWID()

csharpdoost
سه شنبه 27 فروردین 1392, 13:28 عصر
SELECT TOP 10 Id, Name FROM customerNames ORDER BY NEWID()


این هم خطا : که درهمه دستورات این خطا رو میده:
102912

veniz2008
سه شنبه 27 فروردین 1392, 14:36 عصر
سلام.
اینطوری بنویس:

SqlConnection con = new SqlConnection("server = .\\md2008;database = Test1;Integrated Security = True");
SqlDataAdapter da = new SqlDataAdapter("SELECT TOP 10 Id,F1 from question_TB ORDER BY NEWID() ", con);
DataTable dt = new DataTable();
da.Fill(dt);
dataGridView1.DataSource = dt;

csharpdoost
سه شنبه 27 فروردین 1392, 15:06 عصر
سلام.
اینطوری بنویس:

SqlConnection con = new SqlConnection("server = .\\md2008;database = Test1;Integrated Security = True");
SqlDataAdapter da = new SqlDataAdapter("SELECT TOP 10 Id,F1 from question_TB ORDER BY NEWID() ", con);
DataTable dt = new DataTable();
da.Fill(dt);
dataGridView1.DataSource = dt;
ممنون ولی بازهم خطامیده این بار :
102919
دیتابیس اکسس هستشه تاثیری که نداره؟

khokhan
سه شنبه 27 فروردین 1392, 15:14 عصر
ممنون ولی بازهم خطامیده این بار :
102919
دیتابیس اکسس هستشه تاثیری که نداره؟

سلام

عزیز جان اینو از اول باستی می گفتی در دیتابیس اکسس به اول نام فیلد یه (rnd )می زارن

اینطوری
SELECT TOP 1 myField, Rnd(myfield) FROM myTable ORDER BY 2

csharpdoost
سه شنبه 27 فروردین 1392, 15:46 عصر
102933دوستان ممنون. ولی چرا با Order by که مینویسم خطا میده.و بدون اون در دیتا گرید اینجوری نشون میده:
یعنی با این دستور :
com.CommandText = "SELECT top 10 Rnd(id) FROM question_TB ";
oda.SelectCommand = com;

102930
و با این دستور خطای زیر :
102932

vistacali
سه شنبه 27 فروردین 1392, 15:50 عصر
سلام من چند مدت پیش نیازی به این کار دارشتم اومدم و دستی این جور روشی رو نوشتم اول با تابع رندم یه عدد بین اون مقادیرم تولید کردم و بعد حالا بر اساس اون عدد تولید شده یه select زدم به پایگاه داده و مقدار مورد نظر رو از اون بیرون کشیدم

csharpdoost
سه شنبه 27 فروردین 1392, 16:02 عصر
سلام من چند مدت پیش نیازی به این کار دارشتم اومدم و دستی این جور روشی رو نوشتم اول با تابع رندم یه عدد بین اون مقادیرم تولید کردم و بعد حالا بر اساس اون عدد تولید شده یه select زدم به پایگاه داده و مقدار مورد نظر رو از اون بیرون کشیدم
این کار یه اشکال داره اون هم وقتیه که کاربر رکوردهایی رو حذف میکنه چون id بصورت Autonumber هستش شما مجبورید بین 1 و ماکزیممID ، رندم بزنید و IDهای زیادی این وسط پاک شده(توسط کاربر) به شما داده برنمگردونه و مجبورید عدد دیگری بفرستید که این کار ممکنه باعث کند شدن برنامه و یا هنگیدن اون منجر بشه.

khokhan
سه شنبه 27 فروردین 1392, 18:29 عصر
دوستان کسی نیست کمکم کنه؟

شاید این نمونه ای که نوشتم بتونه کمکتون کنه :لبخند: البته امید وارم

شاد شاد :لبخند:

csharpdoost
سه شنبه 27 فروردین 1392, 20:14 عصر
واقعا متشکرم.