Please start any new threads on our new site at https://forums.sqlteam.com. We've got lots of great SQL Server experts to answer whatever question you can come up with.

 All Forums
 SQL Server 2008 Forums
 Transact-SQL (2008)
 (probably simple) Join Question

Author  Topic 

TheKai
Starting Member

16 Posts

Posted - 2010-04-05 : 22:21:41

Thanks for taking a look at my question! :)

I have two tables:

TABLE People
------------
PersonID int
PersonName varchar(100)

TABLE Messages
------------
MessageID int
TimeSent date
Sender int
Receiver int

I'm trying to get a result set that looks something like

RESULT
-----------------------
MessageID , TimeSent, SenderID, SenderName, ReceiverID, ReceiverName
MessageID , TimeSent, SenderID, SenderName, ReceiverID, ReceiverName


I've only been able to devise a implicit join query that returns ONE of the persons's names, not both because it contains a "WHERE Messages.Sender = People.PersonID" clause.

Can you help me figure out what the apropriate query might look like?

Thanks in advance!

tkizer
Almighty SQL Goddess

38200 Posts

Posted - 2010-04-05 : 22:34:32
Try this:

SELECT m.MessageID, m.TimeSent, s.PersonID AS SenderID, s.PersonName AS SenderName,
r.PersonID AS ReceiverID, r.PersonName AS ReceiverName
FROM Messages m
JOIN People s
ON m.PersonID = s.Sender
JOIN People r
ON m.PersonID = r.Receiver

Tara Kizer
Microsoft MVP for Windows Server System - SQL Server
http://weblogs.sqlteam.com/tarad/

Subscribe to my blog
Go to Top of Page

khtan
In (Som, Ni, Yak)

17689 Posts

Posted - 2010-04-05 : 22:36:39
[code]
select m.MessageID, m.TimeSend, m.Sender, s.PersonName as SenderName, m.Receiver, r.PersonName as ReceiverName
from Messages m
inner join Person s on m.Sender = s.PersonID
inner join Person r on m.Receiver = r.PersonID
[/code]


KH
[spoiler]Time is always against us[/spoiler]

Go to Top of Page

khtan
In (Som, Ni, Yak)

17689 Posts

Posted - 2010-04-05 : 22:39:39
quote:
Originally posted by tkizer

Try this:

SELECT m.MessageID, m.TimeSent, s.PersonID AS SenderID, s.PersonName AS SenderName,
r.PersonID AS ReceiverID, r.PersonName AS ReceiverName
FROM Messages m
JOIN People s
ON s.PersonID = m.Sender
JOIN People r
ON r.PersonID = m.Receiver

Tara Kizer
Microsoft MVP for Windows Server System - SQL Server
http://weblogs.sqlteam.com/tarad/

Subscribe to my blog



Tara, you have got the alias on the wrong side


KH
[spoiler]Time is always against us[/spoiler]

Go to Top of Page

TheKai
Starting Member

16 Posts

Posted - 2010-04-05 : 22:55:04
quote:
Originally posted by khtan


select m.MessageID, m.TimeSend, m.Sender, s.PersonName as SenderName, m.Receiver, r.PersonName as ReceiverName
from Messages m
inner join Person s on m.Sender = s.PersonID
inner join Person r on m.Receiver = r.PersonID



KH
[spoiler]Time is always against us[/spoiler]





Aha! Thanks to you both! I didn't know you could do a multiple inner like that. Very cool. I learned something new!
Go to Top of Page

tkizer
Almighty SQL Goddess

38200 Posts

Posted - 2010-04-06 : 15:03:14
Oops! Was holding a baby while posting.

Tara Kizer
Microsoft MVP for Windows Server System - SQL Server
http://weblogs.sqlteam.com/tarad/

Subscribe to my blog
Go to Top of Page
   

- Advertisement -