Want to protect your cyber security and still get fast solutions? Ask a secure question today.Go Premium

x
?
Solved

Slightly complicated select statement

Posted on 2012-03-12
2
Medium Priority
?
393 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 2000 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

Restore individual SQL databases with ease

Veeam Explorer for Microsoft SQL Server delivers an easy-to-use, wizard-driven interface for restoring your databases from a backup. No expert SQL background required. Web interface provides a complete view of all available SQL databases to simplify the recovery of lost database

Question has a verified solution.

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

Why is this different from all of the other step by step guides?  Because I make a living as a DBA and not as a writer and I lived through this experience. Defining the name: When I talk to people they say different names on this subject stuff l…
A Stored Procedure in Microsoft SQL Server is a powerful feature that it can be used to execute the Data Manipulation Language (DML) or Data Definition Language (DDL). Depending on business requirements, a single Stored Procedure can return differe…
Via a live example, show how to set up a backup for SQL Server using a Maintenance Plan and how to schedule the job into SQL Server Agent.
Viewers will learn how the fundamental information of how to create a table.
Suggested Courses

580 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