0

我有两张桌子,tbl_msg ...

tbl_msg

tbl_user

tbl_user

我想从 tbl_msg 中选择所有 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 的名称,而不是 toid 和 fromid 的名称

如何才能做到这一点?

4

3 回答 3

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
于 2013-06-20T09:19:55.403 回答
0

尝试改为ON tbl_msg.FromId=tbl_User.IDon tbl_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
于 2013-06-20T09:22:30.593 回答
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
于 2013-06-20T09:23:10.350 回答