Question

Limit number of records and specify search criteria

Asked by: lpenrod

I have a complex (for me) stored procedure.

This is greatly simplified.

CREATE PROCEDURE sp_newest
      (@orderby varchar(10),
      @orderdir varchar(4),
      @search varchar(100))
AS
SELECT name,address,city,state,zip,price,date
      FROM (table1 INNER JOIN table2 ON table1.id = table2.id)
      WHERE (table1.status = 2)
      
      GROUP BY name,address,city,state,zip

      ORDER BY
            CASE @orderdir
                  WHEN 'asc' THEN
                  CASE @orderby
                        WHEN 'price' THEN price
                  END
            END
      ASC,
            CASE @orderdir
                  WHEN 'asc' THEN
                  CASE @orderby
                        WHEN 'name' THEN name
                  END
            END
      ASC,
            CASE @orderdir
                  WHEN 'asc' THEN
                  CASE @orderby
                        WHEN 'date' THEN date
                  END
            END
      ASC,
            CASE @orderdir
                  WHEN 'desc' THEN
                  CASE @orderby
                        WHEN 'price' THEN price
                  END
            END
      DESC,
            CASE @orderdir
                  WHEN 'desc' THEN
                  CASE @orderby
                        WHEN 'name' THEN name
                  END
            END
      DESC,
            CASE @orderdir
                  WHEN 'desc' THEN
                  CASE @orderby
                        WHEN 'date' THEN date
                  END
            END
      DESC
GO

I need to return only 100 records and the records need to be the 100 newest (based on date).
The user may choose to sort by price or name or date, but the records always have to be the 100 newest.
Not sure how to accomplish that.

This Question has been solved and asker verified All Experts Exchange premium technology solutions are available to subscription members.

Subscribe now for full access to Experts Exchange and get

Instant Access to this Solution

  • Plus...
  • 30 Day FREE access, no risk, no obligation
  • Collaborate with the world's top tech experts
  • Unlimited access to our exclusive solution database
  • Never be left without tech help again

Subscribe Now

Asked On
2007-06-06 at 19:07:06ID22618062
Tags

limit

,

records

,

number

Topics

SQL Server 2005

,

Active Server Pages (ASP)

,

MS SQL Server

Participating Experts
5
Points
500
Comments
25

Trusted by hundreds of thousands everyday for fast, accurate and reliable tech support.

  • "The time we save is the biggest benefit of Experts Exchange to Warner Bros. What could take multiple guys 2 hours or more each to find is accessed in around 15 minutes on Experts Exchange." Mike Kapnisakis, Warner Bros.
  • "Our team likes having a resource that is more secure than just using Google and most experts using this service really know their stuff. It's nice to look here first versus using Google." Dayna Sellner, Lockheed Martin
  • "Anytime that I've been stumped with a problem, 9 out of 10 times Experts Exchange has either the accepted solution or an open discussion of the potential solution to the problem." Kenny Red, eBay Inc.

See what Experts Exchange can do for you.

Got a question?

We've got the answer.

Experts Exchange has been collecting answers to technology questions since 1996…3 million and counting! If you have a question, chances are we already have your answer.

Screenshot of Experts Exchange Knowledgebase

Need individual assistance?

Our experts are ready to help.

If you can't find the exact answer you're looking for, ask our exclusive community of 50,000 experts. You’ll get a personalized answer from a trusted professional.

Screenshot of Experts Exchange Knowledgebase

Want to learn from the best?

Read articles from industry experts.

Thousands of free tech tips, tricks, how-to’s and tutorials are available in our peer reviewed articles section. See for yourself how smart our experts are, no login required.

Screenshot of an Article

Working on a long term project?

Store your work and research.

Save solutions to your questions, answers you’ve discovered through searching plus helpful articles in your personal knowledgebase for easy future access.

Screenshot of Experts Exchange Knowledgebase

Access the answers to your technology questions today.

Subscribe Now

30-day free trial. Register in 60 seconds.

What Makes Experts Exchange Unique?

Members of the expert community talk about why the experience at Experts Exchange is different than what you will find anywhere else.

Trusted by the world's most respected brands.

image of each brand's logo

Faithfully serving IT professionals since 1996.

Experts Exchange Logo

Try it out and discover for yourself.

Subscribe Now

30-day free trial. Register in 60 seconds.

Related Solutions

  1. SQL Server 2000 Table Joins Using "INNER JOIN" synt…
    Hi, I am wondering if there are any performance or technical advantages or disadvantages to using the recommended table join syntax of INNER JOIN, versus using the equals sign "=" such as table1.id = table2.id? If i'm only doing INNER JOINs (no outer joins), is it...
  2. Delete from Table1 where Table2.ID NOT IN TABLE1.ID
    Hello, I know you can use this statement: DELETE FROM Table1 WHERE Table1.ID NOT IN (SELECT Table2.ID FROM Table2) The only problem is, I need just the opposite of this! I need to know how to delete records from Table1 WHERE the ID field of Table2 is not in the ID subset o...
  3. How to update table1 frlom table2?
    I have two tables: table1 and table2. Here is query: update table1 set table1.UseAsPrimary = 0 where table1.ID = table2.ID and table2.UseAsPrimary = 1 The error is The column prefix 'table2' does not match with a table name or alias name used in the query. What is wrong?
  4. inner join top 1
    i'm trying to get away from inline select statements embedded within select statements. so is it possible to do something like this? inner join top 1 table2 on table1.id = table2.id

Free Tech Articles

  1. WARNING: 5 Reasons why you should NEVER fix a computer for free.
    It is in our nature to love the puzzle. We are obsessed. The lot of us. We love puzzles. We love the challenge. We thrive on finding the answer. We hate disarray. It bothers us deep in our soul. W...
  2. SCCM OSD Basic troubleshooting
    SCCM 2007 OSD is a fantastic way to deploy operating systems, however, like most things SCCM issues can sometimes be difficult to resolve due to the sheer volume of logs to sift through and the dispe...
  3. Migrate Small Business Server 2003 to Exchange 2010 and Windows 2008 R2
    This guide is intended to provide step by step instructions on how to migrate from Small Business Server 2003 to Windows 2008 R2 with Exchange 2010. For this migration to work you will need the fo...
  4. Create a Win7 Gadget
    This article shows you how to create a simple "Gadget" -- a sort of mini-application supported by Windows 7 and Vista. Gadgets can be dropped anywhere on the desktop to provide instant information, ...
  5. Outlook continually prompting for username and password
    There have been a lot of questions recently regarding Outlook prompting for a username and password whilst using Exchange 2007. There are a few reasons why this would happen and I will try to cover t...
  6. Backup Exchange 2010 Information Store using Windows Backup
    There seems to be quite a lot of confusion around the ability to backup Exchange 2010 using the built in Windows Backup feature. This stems from the omission of this feature prior to Exchange 2007 s...

Cloud Class Webinars

  1. Avoiding Bugs in Microsoft Access
    Alison Balter takes and in-depth look at avoiding bugs in Access. In this webinar you will learn about using the immediate window to debug your applications, invoking the debugger, using breakpoints to troubleshoot, stepping through code, setting the next statement to execute, ...
  2. Top 10 Best New Features in Visio 2010
    Scott Helmers gives live demonstrations of the top 10 new features in Visio 2010. This webinar will teach you how to create compelling diagrams by adding shapes to the page with a single click, linking the shapes in a diagram to data in Excel (or SQL Server, or SharePoint), ...
  3. IT Consultant Business Secrets Revealed
    Michael Munger, Experts Exchange tech pro and IT consultant, pulls back the curtain on his very successful businesses and answers question on every IT consultant and business owner should know about. He shares secrets on what he did to solve the 5 most common problems in IT, ...
  4. Disaster Recovery and Business Continuity
    Quest CTO, Mike Billon, gives an overview of the steps involved in building a dunamic disaster recovery plan. Through case studies and an examination of software/hardware tooles for monitoring and testing, you'll gain a better understandin of where you are, where you want ...
  5. Organize Your Visio Diagrams with Containers and Lists
    Scott Helmers uses cross functional flowcharts, wireframe diagrams, data graphic legends and seating charts to teach you: how to ustilize all three new structured diagram components in Visio 2010, the best practices for organizeing shapes in previous version of Visio, how to organize ...
  6. How to Us Objects, Properties, Events and Methods in Microsoft Access
    Alison Dalter gives an in-depbth look at objects, properties, events and methods in Microsoft Access. In this webinar you will learn about using the object browser, referring to objects, working with properties and methods, working with object variables, understanding the ...

Join the Community

Give a Little. Get a Lot.

Join the community of experts here and help other tech pros by answering question in your area of expertise. You can earn FREE access to all Experts Exchange's premium features and resources.

Join the Community

Answers

 

by: _agx_Posted on 2007-06-06 at 19:10:33ID: 19229991

Use the TOP operator

SELECT TOP 100 name,address,city,state,zip,price,date
FROM   .....

 

by: Raynard7Posted on 2007-06-06 at 19:12:32ID: 19229998

you can also add the amount of values you want to select from as a parameter and then use top @parameterForNumberOFRows

additonally - I would suggest that you are better not using a case statement as part of the query - but using if statements in the SP to construct the order by statement - this should be much faster and more reliable.

 

by: SjoerdVerweijPosted on 2007-06-06 at 19:16:59ID: 19230019

What they are getting at is something like:

Declare @SQL VarChar(8000)

Set @SQL = 'Select ........ Order By '
Set @SQL = @SQL + '[' + @OrderBy '] '
If (@OrderDir = 'Desc') Set @SQL = @SQL + 'Desc'
Execute (@SQL)

 

by: lpenrodPosted on 2007-06-06 at 19:21:31ID: 19230037

It is still now coming together in my head.  

If I add TOP 100 and a user decides to sort by price asc, then I get the top 100 sorted by price asc instead of what I need which is the 100 newest items sorted by price asc, right?

 

by: StephenCairnsPosted on 2007-06-06 at 19:21:50ID: 19230041

you did not say if this is the the top 100 before or after the grouping

select * from
(
SELECT  top 100 name,address,city,state,zip,price,date
      FROM (table1 INNER JOIN table2 ON table1.id = table2.id)
      WHERE (table1.status = 2)
GROUP BY name,address,city,state,zip
      order by date desc)


      ORDER BY
            CASE @orderdir
                  WHEN 'asc' THEN
                  CASE @orderby
                        WHEN 'price' THEN price
                  END
            END
      ASC,
            CASE @orderdir
                  WHEN 'asc' THEN
                  CASE @orderby
                        WHEN 'name' THEN name
                  END
            END
      ASC,
            CASE @orderdir
                  WHEN 'asc' THEN
                  CASE @orderby
                        WHEN 'date' THEN date
                  END
            END
      ASC,
            CASE @orderdir
                  WHEN 'desc' THEN
                  CASE @orderby
                        WHEN 'price' THEN price
                  END
            END
      DESC,
            CASE @orderdir
                  WHEN 'desc' THEN
                  CASE @orderby
                        WHEN 'name' THEN name
                  END
            END
      DESC,
            CASE @orderdir
                  WHEN 'desc' THEN
                  CASE @orderby
                        WHEN 'date' THEN date
                  END
            END
      DESC

 

by: lpenrodPosted on 2007-06-06 at 19:22:13ID: 19230043

"not", not "now"

 

by: lpenrodPosted on 2007-06-06 at 19:24:02ID: 19230048

I guess part of my problem is I don't really get grouping.

 

by: lpenrodPosted on 2007-06-06 at 19:25:18ID: 19230055

Ok StephenCairns, that looks like the direction I need to go.

 

by: SjoerdVerweijPosted on 2007-06-06 at 19:27:15ID: 19230067

Ugh, forgot the top:

Declare @SQL VarChar(8000)

Set @SQL = 'Select Top 100 ........ Order By '
Set @SQL = @SQL + '[' + @OrderBy '] '
If (@OrderDir = 'Desc') Set @SQL = @SQL + 'Desc'
Execute (@SQL)

For the record, whether you go with this dynamic SQL solution or the humunguous subquery solutions others are proposing, this will be Extremely Inefficient(TM). The SQL Server tries to optimize queries, and neither solution allows for this. To put it another way, you might be reduced to do something like

If (@OrderBy = 'blah')
  Select ...
Else If (@OrderBy = 'other blah')
  Select ...

Consider that fair warning  :-)

 

by: lpenrodPosted on 2007-06-06 at 19:39:46ID: 19230201

StephenCairns, when I make your recommended change, I get the error "Incorrect syntax near the keywork 'ORDER'.  The error is pointing to the ORDER BY statement right above the first CASE.

 

by: StephenCairnsPosted on 2007-06-06 at 19:42:44ID: 19230211

Hmm

try giving the sub query an alias
(
SELECT  top 100 name,address,city,state,zip,price,date
      FROM (table1 INNER JOIN table2 ON table1.id = table2.id)
      WHERE (table1.status = 2)
GROUP BY name,address,city,state,zip
      order by date desc) x

 

by: SjoerdVerweijPosted on 2007-06-06 at 20:01:29ID: 19230286

Wait, are expressions even allowed at that point?

[ Testing... ]

It does not seem to swallow any variant. lp: you might have to resort to my hack.

 

by: StephenCairnsPosted on 2007-06-06 at 21:05:17ID: 19230640

lpenrod
if that does not work you could pull the subquery out as a view and handle it that way.

SjoerdVerweij
wont your version just give the top 100 records ordered by whatever the parameter is rather than the most recent 100 records ordered by the parameter?

 

by: SjoerdVerweijPosted on 2007-06-06 at 21:17:14ID: 19230681

Stephen: Ugh. Yes, you are correct.

To do that, you would have to go something like

Declare @SQL VarChar(8000)

Set @SQL = 'Select Top 100 ........ Order By [WhatEverFieldDefinesWhichMakesEmRecent], '
Set @SQL = @SQL + '[' + @OrderBy '] '
If (@OrderDir = 'Desc') Set @SQL = @SQL + 'Desc'
Execute (@SQL)

 

by: StephenCairnsPosted on 2007-06-06 at 23:13:56ID: 19231147

Sjoerd
that would give the most recent 100 records ordered by date *and*  the required parameter, not the most recent 100 records ordered by the required parameter.  we need to get the subset of data first then order it.
I think probably using a view to get the subset then ordering it would be the way to go.

cheers

 

by: lpenrodPosted on 2007-06-06 at 23:34:28ID: 19231226

Sadly, you might as well be talking another language.  I am not understanding what I need to do.

 

by: StephenCairnsPosted on 2007-06-06 at 23:43:41ID: 19231264

Sorry
I thik we are geting sidetracked

create a view to get your subset of data

CREATE VIEW v_recentdata
AS

SELECT  top 100 name,address,city,state,zip,price,date
      FROM (table1 INNER JOIN table2 ON table1.id = table2.id)
      WHERE (table1.status = 2)
GROUP BY name,address,city,state,zip
      order by date desc  

GO


Then change your stored procedure to


CREATE PROCEDURE sp_newest
      (@orderby varchar(10),
      @orderdir varchar(4),
      @search varchar(100))
AS
SELECT name,address,city,state,zip,price,date
      FROM v_recentdata
      ORDER BY
            CASE @orderdir
                  WHEN 'asc' THEN
                  CASE @orderby
                        WHEN 'price' THEN price
                  END
            END
      ASC,
            CASE @orderdir
                  WHEN 'asc' THEN
                  CASE @orderby
                        WHEN 'name' THEN name
                  END
            END
      ASC,
            CASE @orderdir
                  WHEN 'asc' THEN
                  CASE @orderby
                        WHEN 'date' THEN date
                  END
            END
      ASC,
            CASE @orderdir
                  WHEN 'desc' THEN
                  CASE @orderby
                        WHEN 'price' THEN price
                  END
            END
      DESC,
            CASE @orderdir
                  WHEN 'desc' THEN
                  CASE @orderby
                        WHEN 'name' THEN name
                  END
            END
      DESC,
            CASE @orderdir
                  WHEN 'desc' THEN
                  CASE @orderby
                        WHEN 'date' THEN date
                  END
            END
      DESC
GO


 

by: KarinLoosPosted on 2007-06-07 at 06:14:21ID: 19233114

mm seems to me all are getting side tracked or ime just going nuts.
"I need to return only 100 records and the records need to be the 100 newest (based on date).
The user may choose to sort by price or name or date, but the records always have to be the 100 newest. "
1.  Your using a sp, so within the sp create a temp table picking up the 100 most recent records of the actual select condition.
2.   Output the resultset from your temp table according to the requested sort orders.

ie
CREATE PROCEDURE sp_newest
      (@orderby varchar(10),
      @orderdir varchar(4),
      @search varchar(100))
AS
begin
   -- Step 1
   SELECT  TOP 100 name,address,city,state,zip,price,date
     INTO  #tmp
      FROM table1
      INNER JOIN table2 ON (table1.id = table2.id)
      WHERE table1.status = 2
      ORDER BY date DESC
   -- Step 2  do the actual output
    SELECT * from #tmp
    ORDER BY
            CASE @orderdir
                  WHEN 'asc' THEN
                  CASE @orderby
                        WHEN 'price' THEN price
                  END
            END
      ASC,
            CASE @orderdir
                  WHEN 'asc' THEN
                  CASE @orderby
                        WHEN 'name' THEN name
                  END
            END
      ASC,
            CASE @orderdir
                  WHEN 'asc' THEN
                  CASE @orderby
                        WHEN 'date' THEN date
                  END
            END
      ASC,
            CASE @orderdir
                  WHEN 'desc' THEN
                  CASE @orderby
                        WHEN 'price' THEN price
                  END
            END
      DESC,
            CASE @orderdir
                  WHEN 'desc' THEN
                  CASE @orderby
                        WHEN 'name' THEN name
                  END
            END
      DESC,
            CASE @orderdir
                  WHEN 'desc' THEN
                  CASE @orderby
                        WHEN 'date' THEN date
                  END
            END
end


     
     
     

 

by: lpenrodPosted on 2007-06-07 at 06:44:40ID: 19233395

I will give them a try tonight.

Thanks!

 

by: SjoerdVerweijPosted on 2007-06-07 at 07:46:42ID: 19234048

Serves me right for answering questions after the second cocktail. Okay, my final .02:

Create Procedure sp_Newest_Final_02
  @OrderBy Character Varying(10),
  @OrderDir Character Varying(4),
  @Search Character Varying(100))
As
Begin

  Declare @SQL Character Varying(8000)

  Set @SQL = 'Select Name, Address, City, State, ZIP, Price, [Date] ' +
      'From (Select Top 100 Name, Address, City, State, ZIP, Price, [Date] ' +
      '    From Table1 Inner Join Table2 On Table1.ID = Table2.ID ' +
      '     Where Table1.Status = 2 Order By [Date] Desc) Order By [' + @OrderBy + '] '
  If (@OrderDir = 'Desc') Set @SQL = @SQL + 'Desc'
  Execute (@SQL)
 
End

 

by: lpenrodPosted on 2007-06-11 at 19:49:05ID: 19263348

SjoerdVerweij, I love loading the variable and then executing.  That is making the code a lot shorter and more readable for me.

But using everyones latest suggestions, I was receiving an error an error "Incorrect sytax near the keyword ORDER".  I was able to figure out (actually _agx_ did for me) that one of the SELECT's needs to be aliased (not sure if I am saying that right).  Here is the question:  http://www.experts-exchange.com/Microsoft/Development/MS-SQL-Server/SQL-Server-2005/Q_22627398.html

Here is my code with some obfuscation:

DECLARE @SQL CHARACTER VARYING(8000)

SET @SQL ='SELECT Count(re_project_views.project_id) AS view_count,re_projects.screen_id,re_screens.screen_screen_name,project_name,project_posted_date,project_size_x,project_size_y,project_frame_rate,CONVERT(varchar,project_duration,14) AS project_duration,ae_version_name,project_linked_graphics,project_camera,project_lights,project_expressions,project_price,platform_name,pixel_aspect_ratio,re_projects.project_id,project_plugins' +
' FROM (SELECT TOP 100 screen_screen_name FROM ((((((re_projects INNER JOIN re_screens ON re_projects.screen_id = re_screens.screen_id)' +
' INNER JOIN re_platform ON re_projects.platform_id = re_platform.platform_id)' +
' INNER JOIN re_pixel_aspect_ratio ON re_projects.pixel_aspect_ratio_id = re_pixel_aspect_ratio.pixel_aspect_ratio_id)' +
' INNER JOIN re_ae_version ON re_projects.ae_version_id = re_ae_version.ae_version_id)' +
' LEFT JOIN re_project_rating_map ON re_projects.project_id = re_project_rating_map.project_id)' +
' INNER JOIN re_project_views on re_project_views.project_id = re_projects.project_id)' +
' WHERE (re_projects.status_id = 2)'
IF (@project_search <> '') SET @SQL = @SQL + ' AND (re_projects.project_search_items like ''%/,' + @project_search + '/,%'' escape ''/'')'
SET @SQL = @SQL + ' GROUP BY re_projects.screen_id,re_screens.screen_screen_name,project_name,project_posted_date,project_size_x,project_size_y,project_frame_rate,CONVERT(varchar,project_duration,14),ae_version_name,project_linked_graphics,project_camera,project_lights,project_expressions,project_price,platform_name,pixel_aspect_ratio,re_projects.project_id,project_plugins) AS T'

IF ((@orderby = 'price')) SET @SQL = @SQL + ' ORDER BY project_price ' + @orderdir
IF ((@orderby = 'profile')) SET @SQL = @SQL + ' ORDER BY screen_screen_name ' + @orderdir
IF ((@orderby = 'rating')) SET @SQL = @SQL + ' ORDER BY ISNULL(AVG(project_rating), 0) ' + @orderdir
IF ((@orderby = 'popular')) SET @SQL = @SQL + ' ORDER BY Count(re_project_views.project_id) ' + @orderdir
IF ((@orderby = 'uploaded')) SET @SQL = @SQL + ' ORDER BY project_posted_date ' + @orderdir

EXECUTE (@SQL)

GO

Both in this code and in the KarinLoos suggestion, I get the message:
Server: Msg 107, Level 16, State 3, Line 1
The column prefix 're_project_views' does not match with a table name or alias name used in the query.
Server: Msg 107, Level 16, State 1, Line 1
The column prefix 're_projects' does not match with a table name or alias name used in the query.
Server: Msg 107, Level 16, State 1, Line 1
The column prefix 're_screens' does not match with a table name or alias name used in the query.
Server: Msg 107, Level 16, State 1, Line 1
The column prefix 're_projects' does not match with a table name or alias name used in the query.
Server: Msg 107, Level 16, State 1, Line 1
The column prefix 're_project_views' does not match with a table name or alias name used in the query.

I feel like we are close.

 

by: StephenCairnsPosted on 2007-06-11 at 20:47:04ID: 19263533

in your select you have refered to the tables 're_project_views', 're_projects', 're_screens'   however this table is in the subquery which you have called T
In your sub query you only have one field 'screen_screen_name'  unless i have missed something in your "more readable" code ;-)
change your
SELECT TOP 100 screen_screen_name FROM
to include allthe fields you are calling inn the main select
re_project_views.project_id
re_projects.screen_id,
re_screens.screen_screen_name,
project_name,
project_posted_date,
project_size_x,project_size_y,
project_frame_rate,
project_duration,
ae_version_name,project_linked_graphics,
project_camera,project_lights,
project_expressions,project_price,
platform_name,pixel_aspect_ratio,
re_projects.project_id,
project_plugins

when you call them either use the alias T. etc or dont use a table identifier


sorry I find that method of creating sql harder to read
cheers

 

by: lpenrodPosted on 2007-06-12 at 11:50:26ID: 19268800

Thanks, that got it working!

If there are no objections, I am going to award this question to StephenCairns.

But, SjoerdVerweij, I really appreciate your tip on loading the variable!  I love that I can PRINT the string to debug!  Greatly simplifies troubleshooting.

 

by: StephenCairnsPosted on 2007-06-12 at 14:46:11ID: 19270227

Hi lpenrod
Its fine by me if you want to split the points. Dont forget SjoerdVerweij other tip, dont drink cocktails before answering questions ;-)
cheers

 

by: lpenrodPosted on 2007-06-12 at 15:27:52ID: 19270467

Crap that was backwards.  Sorry...

20120131-EE-VQP-002

3 Ways to Join

30-Day Free Trial

The Experts

98% positive feedback on 31,087 answers since March 2000. angeliii is a Microsoft Most Valuable Professional for his work with MS SQL Server & Develoment.

He has also proven his knowledge of Visual Basic Programming, PHP Scripting and Oracle Databases.

The Experts

97% positive feedback on 10,752 answers since July 2000. lrmoore has more than 18 years experience in the networking industry.

The six-time Mircosoft MVPs specialties include firewalls, virtual private networking, and network management.

Testimonials

"...and excellent source for support... Kind of like having your very own IT dept." Electriciansnet

Testimonials

"I was apprehensive at signing up at first. However... it has already made my life as an IT administrator much easier." JaCrews

Testimonials

"WOW! You guys have great, active, and knowledgeable people on here." moore50

Business Clients

Business Clients

In the Press

"If you’ve got a question... Experts Exchange can supply an answer.”

In the Press

"...an invaluable aid for both IT professionals and those who require tech support."

In the Press

"where IT professionals provide quick answers on just about any topic"

Business Account Plans

Loading Advertisement...