2013-06-20 110 views
0

我有兩個表,tbl_msg ...SQL查詢涉及到兩個表

tbl_msg

tbl_user

tbl_user

我想選擇所有從tbl_msg其中封郵件toid = 42以及已發送msg的人員的姓名(而不是fromid)。結果應該是這個樣子..

|fromid(name, not the id)| Msg| toid(name!,which belongs to id 42)|some other column from msgid| 

查詢:

select tbl_msg.[MsgId]  
    ,tbl_User.FirstName as sentby  
    ,tbl_msg.[ToId] 
    ,tbl_msg.[Msg] 
from 
    tbl_msg 
inner join 
    tbl_User on tbl_msg.FromId = tbl_User.ID 
where 
    tbl_msg.ToId = 42 

但這隻會給我的名字相應fromid,而不是兩個風溼名稱和fromid

這怎麼可能做了什麼?

回答

5

你必須加入用戶兩次:

select m.[MsgId] 
    ,u1.FirstName as sentby 
    ,u2.FirstName as sentTo 
    ,m.[Msg] 
from tbl_msg m 
inner join tbl_User u1 on m.FromId = u1.ID 
inner join tbl_User u2 on m.ToId = u2.ID 
where m.ToId = 42 
+0

消息4104,級別16,狀態1,行8 多部分標識符 「tbl_msg.ToId」 不能被約束。 – Arbaaz

+0

Fxied。再試一次,它會工作:) – gzaxx

+0

工程就像一個魅力! ;) – Arbaaz

0

試圖改變ON tbl_msg.FromId=tbl_User.IDtbl_msg.ToId=tbl_User.ID代替:

select tbl_msg.[MsgId]  
,tbl_User.FirstName as sentby  
,tbl_msg.[ToId] 
,tbl_msg.[Msg] from tbl_msg inner join tbl_User 
on tbl_msg.ToId=tbl_User.ID 
where tbl_msg.ToId=42 
0

希望這個查詢將幫助你。

select tbl_msg.[MsgId]  
    ,u1.FirstName as sentby  
    ,u2.FirstName as FromSent 
    ,tbl_msg.[ToId] 
    ,tbl_msg.[Msg] from tbl_msg 
    inner join tbl_User u1 on tbl_msg.FromId=u1.ID 
    inner join tbl_User u2 on u1.ToID = u2.ID 
    where tbl_msg.ToId=42