2012-09-23 43 views
3

我有消息表中存在「senderid」和「receiverid」。 我有用戶表中找到每個用戶的用戶名。我怎樣才能從一個表中選擇一個值兩次不同的值

現在我想創建一個存儲過程,在其中選擇用戶名userid = senderid和用戶名userid = receivername的用戶名。

我試過這個,但它是錯誤的,因爲我從來沒有做過這樣的事情。

SELECT  SystemUser.SU_Username Where SystemUser.SU_ID=MessageReciever As RecieverName, SystemUser.SU_Username where Message.SenderID = SystemUser.SU_ID As SenderName FROM   Message CROSS JOIN 
        SystemUser 

有沒有辦法做我想做的事?

回答

6

選擇從SystemUser表兩次,表的別名:

SELECT  SUR.SU_Username As RecieverName 
      , SUS.SU_Username As SenderName 
FROM   Message 
       JOIN SystemUser SUR 
        on (SUR.SU_ID = Message.MessageReciever) 
       JOIN SystemUser SUS 
        on (SUS.SU_ID = Message.SenderID) 
+0

它的工作,非常感謝。 –

1

已經看了你的SQL相當長的一段時間後,我覺得我figued你想要做什麼: 剛剛加入兩次

select r.SU_Username as RecieverName, 
     s.SU_Username as SenderName 
from Message m 
inner join SystemUser r on (r.SU_ID = m.MessageReciever) 
inner join SystemUser s on (s.SU_ID = m.SenderID) 
1

鑑於這樣的:

create table users (name text, id integer); 
create table messages (receiver_id integer, sender_id integer); 

你在找什麼應該是:

select us.name as sender_name, ur.name as receiver_name 
from users us, users ur, messages m 
where us.id = m.sender_id and ur.id = m.receiver_id; 
相關問題