【问题标题】:Sql query involving two tables涉及两个表的sql查询
【发布时间】:2013-06-20 09:13:12
【问题描述】:

我有两张表,tbl_msg...

tbl_user

我想从 tbl_msg 中选择所有消息,其中 toid=42 以及发送消息的人的相应姓名(而不是 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 的名称

如何做到这一点?

【问题讨论】:

    标签: c# asp.net sql sql-server sql-server-2008


    【解决方案1】:

    你必须加入用户两次:

    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
    

    【讨论】:

    • Msg 4104, Level 16, State 1, Line 8 无法绑定多部分标识符“tbl_msg.ToId”。
    • 顺便说一句,去哪里学习这些东西?因为我只能在互联网上找到基本的 sql 教程网站。
    • 互联网上应该有好书/教程。我没有任何对你有用的东西,对不起:/
    【解决方案2】:

    尝试将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
    

    【讨论】:

      【解决方案3】:

      希望此查询对您有所帮助。

      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
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2021-12-01
        • 2012-08-15
        • 1970-01-01
        • 2016-07-26
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多