Solved

Slightly complicated select statement

Posted on 2012-03-12
2
381 Views
Last Modified: 2012-03-12
Hello SQL Gurus...

I'm pretty sure this is a quick one, but can't for the life of me remember how to do it..

I'm trying to do a select from 3 tables -

dbo.Member (Parent)
dbo.[Member-Phone]
dbo.[Member-Phone]

Select from dbo>member is fine, however as the member can have multiple phone numbers and multiple email addresses...

I can do that fine also..

my code so far is --

SELECT 
M.ID,
M.FirstName, 
M.LastName, 
M.ClubName, 
M.[UK-Member],
M.[Eire-Member],
M.[EU-Member],
M.AccountType, 
M.Birthdate, 
M.Startdate, 
M.URL, 
M.ExitDate,
E.Email,
P.Phone
FROM dbo.Member M
inner join dbo.[Member-Email] E
on E.MemberID = M.ID
inner join dbo.[Member-Phone] P
on P.MemberID = M.ID
LEFT OUTER join dbo.[Member-Phone] MP
on MP.MemberID = M.ID
WHERE M.ID = 12 AND E.defaultemail = 'Y' AND P.DefaultP = 'Y'

Open in new window


Where it is getting complicated is around here --

LEFT OUTER join dbo.[Member-Phone] MP
on MP.MemberID = M.ID

Open in new window


In that what I want to do here is select the top 1 result from dbo.[Member-Phone]  where [MemberID] = dbo.Member.ID AND [Type] = 2 (Mobile).

Taking into consideration that there may not be a record associated, but the select statement should still return results, just with nothing in the MP.Phone colun that will be added to the select statement under P.Phone...

SELECT 
M.ID,
M.FirstName, 
M.LastName, 
M.ClubName, 
M.[UK-Member],
M.[Eire-Member],
M.[EU-Member],
M.AccountType, 
M.Birthdate, 
M.Startdate, 
M.URL, 
M.ExitDate,
E.Email,
P.Phone
MP.Phone  <-HERE

Open in new window


Hope that makes sense?

Thanks
0
Comment
Question by:garethtnash
2 Comments
 
LVL 25

Accepted Solution

by:
jogos earned 500 total points
ID: 37709411
If you want 2 rows returned when there are 2 mobile phones or there is always only one mobile phone then just adding the
 AND MP.[Type] = 2
at the end of your WHERE is enough

When you only want max 1 mobile phone and there could be multiple then

SELECT 
M.ID,
M.FirstName, 
M.LastName, 
M.ClubName, 
M.[UK-Member],
M.[Eire-Member],
M.[EU-Member],
M.AccountType, 
M.Birthdate, 
M.Startdate, 
M.URL, 
M.ExitDate,
E.Email,
P.Phone,
(select top 1 mp.Phone 
 from dbo.[Member-Phone] MP
 WHERE MP.MemberID = M.ID and mp.type = 2
 ) as Mobile
FROM dbo.Member M
inner join dbo.[Member-Email] E
on E.MemberID = M.ID
inner join dbo.[Member-Phone] P
on P.MemberID = M.ID
WHERE M.ID = 12 AND E.defaultemail = 'Y' AND P.DefaultP = 'Y'

Open in new window

0
 

Author Closing Comment

by:garethtnash
ID: 37709416
Great thanks
0

Featured Post

Zoho SalesIQ

Hassle-free live chat software re-imagined for business growth. 2 users, always free.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Suggested Solutions

Title # Comments Views Activity
Dimension table indexes 8 12
Add '#' to end of file 2 29
Updating a table from a temp table 4 28
Sql Query 4 16
In this article I will describe the Copy Database Wizard method as one possible migration process and I will add the extra tasks needed for an upgrade when and where is applied so it will cover all.
Ever wondered why sometimes your SQL Server is slow or unresponsive with connections spiking up but by the time you go in, all is well? The following article will show you how to install and configure a SQL job that will send you email alerts includ…
Via a live example combined with referencing Books Online, show some of the information that can be extracted from the Catalog Views in SQL Server.
This videos aims to give the viewer a basic demonstration of how a user can query current session information by using the SYS_CONTEXT function

910 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question

Need Help in Real-Time?

Connect with top rated Experts

24 Experts available now in Live!

Get 1:1 Help Now