[Webinar] Streamline your web hosting managementRegister Today

x
  • Status: Solved
  • Priority: Medium
  • Security: Public
  • Views: 1884
  • Last Modified:

Using alternative to LIMIT command and using INNER JOIN in MS SQL Query

Hi,

I have the follwoing SQL:

SELECT     a.ContactID, a.CompanyID, a.ContactPrefix, a.ContactFName, a.ContactLName, a.ContactSurfix, a.ContactJobTitle, a.ContactPhone, a.ContactEmail,
                      b.CompanyName, b.CompanyPhone, b.CompanySegment, a.ContactMobile, a.ContactCustRelat, a.ContactAccntMng, a.ContactNotes,
                      b.CompanyFascimile, b.CompanyWeb, a.ContactRcdMng
FROM         Contact a INNER JOIN
                      Company b ON a.CompanyID = b.CompanyID
WHERE     (b.CompanySegment LIKE 'Finance') AND (a.ContactRemoved IS NULL) AND (b.CompanyRemoved IS NULL)
ORDER BY a.ContactID

This works fine but I also want to add a 'LIMIT' function.

I have the following code which performs the alternative to MySQL LIMIT command.

SELECT     contactid, contactlname
FROM         (SELECT     TOP 15 contactid, contactlname
                       FROM          (SELECT     TOP 45 contactid, contactlname
                                               FROM          contact
                                               ORDER BY contactid ASC) AS newtbl
                       ORDER BY contactid DESC) newtbl2
ORDER BY contactid

I need to use get the LIMIT capability of the second query into the first.

The reason for this is that I am using AJAX to call SQL lines on demand.

Any help would be really appreciated.

Thank you,

SC69

0
Stormchild69
Asked:
Stormchild69
  • 2
  • 2
  • 2
1 Solution
 
dstanley9Commented:
How about this (not optimized):

SELECT     a.ContactID, a.CompanyID, a.ContactPrefix, a.ContactFName, a.ContactLName, a.ContactSurfix, a.ContactJobTitle, a.ContactPhone, a.ContactEmail,
                      b.CompanyName, b.CompanyPhone, b.CompanySegment, a.ContactMobile, a.ContactCustRelat, a.ContactAccntMng, a.ContactNotes,
                      b.CompanyFascimile, b.CompanyWeb, a.ContactRcdMng
FROM         Contact a INNER JOIN
                      Company b ON a.CompanyID = b.CompanyID
WHERE     (b.CompanySegment LIKE 'Finance') AND (a.ContactRemoved IS NULL) AND (b.CompanyRemoved IS NULL)
AND a.ContactID IN
 (SELECT     TOP 15 contactid
                       FROM          (SELECT     TOP 45 contactid
                                               FROM          contact
                                               ORDER BY contactid ASC)
                       ORDER BY contactid DESC)
ORDER BY a.ContactID
0
 
Stormchild69Author Commented:
Hello,

Many thanks but I got an error on line 11 (second ORDER from the bottom). I added bach 'AS newtbl' and it ran but produced a mess of duplicated contactids. Contactid is unique in that there should only be one per contact and I would hope that contactid 30-45 would be displayed. This is what I tried

SELECT     a.ContactID, a.CompanyID, a.ContactPrefix, a.ContactFName, a.ContactLName, a.ContactSurfix, a.ContactJobTitle, a.ContactPhone, a.ContactEmail,
                      b.CompanyName, b.CompanyPhone, b.CompanySegment, a.ContactMobile, a.ContactCustRelat, a.ContactAccntMng, a.ContactNotes,
                      b.CompanyFascimile, b.CompanyWeb, a.ContactRcdMng
FROM         Contact a INNER JOIN
                      Company b ON a.CompanyID = b.CompanyID
WHERE     (b.CompanySegment LIKE 'Finance') AND (a.ContactRemoved IS NULL) AND (b.CompanyRemoved IS NULL) AND (a.ContactID IN
                          (SELECT     TOP 15 a.contactid
                            FROM          (SELECT     TOP 45 a.contactid
                                                    FROM          contact a
                                                    ORDER BY a.contactid ASC) AS newtbl
                            ORDER BY a.contactid DESC))
ORDER BY a.ContactID


Many thanks for trying,

SC69
0
 
dstanley9Commented:
I think I see the problem.  I think reusing the "a" prefix in the subquery was messing it up.  Try

SELECT     a.ContactID, a.CompanyID, a.ContactPrefix, a.ContactFName, a.ContactLName, a.ContactSurfix, a.ContactJobTitle, a.ContactPhone, a.ContactEmail,
                      b.CompanyName, b.CompanyPhone, b.CompanySegment, a.ContactMobile, a.ContactCustRelat, a.ContactAccntMng, a.ContactNotes,
                      b.CompanyFascimile, b.CompanyWeb, a.ContactRcdMng
FROM         Contact a INNER JOIN
                      Company b ON a.CompanyID = b.CompanyID
WHERE     (b.CompanySegment LIKE 'Finance') AND (a.ContactRemoved IS NULL) AND (b.CompanyRemoved IS NULL) AND (a.ContactID IN
                          (SELECT     TOP 15 contactid
                            FROM          (SELECT     TOP 45 contactid
                                                    FROM          contact
                                                    ORDER BY contactid ASC)
                            ORDER BY contactid DESC))
ORDER BY a.ContactID
0
Free Tool: Path Explorer

An intuitive utility to help find the CSS path to UI elements on a webpage. These paths are used frequently in a variety of front-end development and QA automation tasks.

One of a set of tools we're offering as a way of saying thank you for being a part of the community.

 
Anthony PerkinsCommented:
Is this SQL Server 2005?
0
 
Stormchild69Author Commented:
Hi,

I am running SQL Server 2000.

Thank you for your help.

I added 'AS newtbl' and then your solution worked as required,

Thanks,

SC69
0
 
Anthony PerkinsCommented:
While I appreciate the points, you appear to have awarded me in error.  See here:

I accepted the wrong answer. Now what?
http://www.experts-exchange.com/Databases/Microsoft_SQL_Server/help.jsp#hi17
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.

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