我有两张桌子, tbl_msg ...
tbl_user
我想从tbl_msg中选择所有来自toid = 42的msgs以及发送了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的名称
如何做到这一点?
答案 0 :(得分: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
答案 1 :(得分:0)
尝试将ON tbl_msg.FromId=tbl_User.ID
改为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
答案 2 :(得分: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