• Status: Solved
  • Priority: Medium
  • Security: Public
  • Views: 523
  • Last Modified:

How to extract random record from Sql Server table

Greetings all

I have a Sql Server table containing various quotes. I would like to extract a random quote each time a particular page is loaded.

How do I get a random record out?


In advance, thanks!!

  allanmark
0
allanmark
Asked:
allanmark
  • 7
  • 6
2 Solutions
 
matrix_aashCommented:
select * from tablename where quotecolumnname = 'random quote name'

hope this helps

Cheers.
0
 
allanmarkAuthor Commented:
Hi!

Did the following: select * from Quotes where Q_Quote = 'random Q_Quote'

Executes, but displays nothing. What have I missed?
0
 
matrix_aashCommented:
Is there a value with 'random q_quote in the column q_quote.

What I meant was just an example by random quote name.


You have put the value which you want to retrive.

Hope this make sense.

If possible send me few rows with the columns name and the data also and what you want to retrive and i will try an answer your question more precisely.

Cheers
0
Independent Software Vendors: We Want Your Opinion

We value your feedback.

Take our survey and automatically be enter to win anyone of the following:
Yeti Cooler, Amazon eGift Card, and Movie eGift Card!

 
allanmarkAuthor Commented:
Thanks!

Snippet1 = table structure; snippet 2 = data loaded into table.

What I want is to extract all the fields, on a purely random basis.
SNIPPET 1:
 
CREATE TABLE [dbo].[Quotes]
(
Q_Id			int		identity(1, 1)  not null,
Q_Quotes		varchar(400)	not null,
Q_Author		varchar(30)not null,
	CONSTRAINT [PK_Quotes] PRIMARY KEY CLUSTERED
	([Q_Id] ASC)
)
 
 
SNIPPET 2:
 
insert into Quotes (Q_Quote, Q_Author)
values ('There is nothing to writing.  All you do is sit down at a typewriter and open a vein.', 'Walter Wellesley Smith')
 
insert into Quotes (Q_Quote, Q_Author)
values ('You must stay drunk on writing so reality cannot destroy you.', 'Ray Bradbury')
 
insert into Quotes (Q_Quote, Q_Author)
values ('So often is the virgin sheet of paper more real than what one has to say, and so often one regrets having marred it.', 'Harold Acton')
 
insert into Quotes (Q_Quote, Q_Author)
values ('The role of a writer is not to say what we all can say, but what we are unable to say.', 'Anaïs Nin')

Open in new window

0
 
matrix_aashCommented:
SELECT * FROM QUOTES

THE ABOVE QUERY WILL GIVE YOU EVERYTHING.

CHEERS.
0
 
allanmarkAuthor Commented:
Sorry .... I'm not doing very well explaining :(  :(

What I meant was that I want to extract fields  Q_Id, Q_Quotes, Q_Author  and have a random extraction each time. Hope this makes more sense.
0
 
matrix_aashCommented:
what do you mean by random extraction ?
0
 
allanmarkAuthor Commented:
In other wards, each time that I execute the statement, I should get back a different record.
0
 
matrix_aashCommented:
Are you going to adding data to this table on daily basis or can u tell me the intervals ?
0
 
allanmarkAuthor Commented:
Data will most likely be added once a week and by a single user, wiuth appropriate porivileges.
0
 
matrix_aashCommented:
SELECT TOP 1 * FROM Q_QUOTES
0
 
matrix_aashCommented:
AFTER THE DATA IS INSERTED THE ABOVE QUERY WILL ALWAYS GIVE YOU DIFFERENT RESULTS.
0
 
naspinskiCommented:
Here is 2 different methods, one with LINQ, and one with the older style sql connections.  As you can see the LINQ is much cleaner.  Also, if your quote pool was a static size, you could cut out the call that gets the maxID size.  This is assuming you have a constant 1-MAX integer ID to reference.
// declare your random
Random rand = new Random();
 
// with LINQ
itemsDataContext db = new itemsDataContext(); // call your dbml
int maxId = (from q in db.items select q.itemID).Max() + 1; // get your max ID
string quoteWithLinq = (from p in db.items where p.itemID==(rand.Next(1, maxId )) select p).First().quote;
 
// or with SqlClient
SqlConnection con = new SqlConnection(ConfigurationManager.ConnectionStrings["mytestDB"].ConnectionString);
SqlCommand sql = new SqlCommand("SELECT MAX(itemID) FROM items", con);
string quoteWithSqlClient = string.Empty;
con.Open();
    int maxID = (int)sql.ExecuteScalar(); // get yoru max ID
    SqlCommand sql2 = new SqlCommand("SELECT quote FROM items WHERE itemID = " + rand.Next(1, maxID + 1).ToString(), con);
    quoteWithSqlClient = sql2.ExecuteScalar().ToString();
con.Close();
 
// proof that they work
Response.Write("quoteWithLinq = " + quoteWithLinq + "<br />");
Response.Write("quoteWithSqlClient = " + quoteWithSqlClient);

Open in new window

0
 
allanmarkAuthor Commented:
Excellent answers!! Many thanks!!
0

Featured Post

Free Tool: SSL Checker

Scans your site and returns information about your SSL implementation and certificate. Helpful for debugging and validating your SSL configuration.

One of a set of tools we are providing to everyone as a way of saying thank you for being a part of the community.

  • 7
  • 6
Tackle projects and never again get stuck behind a technical roadblock.
Join Now