假设表名是RecordTable 里面有字段 SourceUserID TargetUserID 表里有很多记录 现在想提取出符合条件的记录
现在通过调用存储过程传进@UserID获取记录 但是得从另一个表AccountsTable里得到名字 请教这条语句应该怎么写
现在我写了 只能得到SourceID的名字 不知道怎么得到TargetUserID的名字
SELECT a.*, b.NickName FROM RecordTable as a,AccountsTable as b 
WHERE @dwUserID=SourceUserID and @dwUserID=b.UserID
这里是我写的,不知道取得TargetUserID的名字要怎么写 最好能一条语句完成,不另外声明变量 求教

解决方案 »

  1.   

    能先解释几个问题吗?1、AccountsTable表的结构和少量的数据,
    2、RecordTable少量数据。这样解决你问题不难,但是我要看数据和大概的结构。
      

  2.   

    SELECT a.*, b.NickName FROM RecordTable as a,AccountsTable as b  
     WHERE SourceUserID=@dwUserID and b.UserID=@dwUserID and a.主键=b.主键
    其实你这里加个关联就可以了。另外,参数那里要放到=号的后面
      

  3.   


    --try
    SELECT a.*, b.NickName,c.NickName FROM RecordTable as a,AccountsTable as b,AccountsTable c
    WHERE a.SourceUserID=b.UserID and a.TargetUserID=c.UserID
    and a.SourceUserID=@dwUserID;
      

  4.   


    --或者你这样写
    SELECT a.*, 
    (select top 1 b.NickName from AccountsTable b where a.SourceUserID=b.UserID) NickName1,
    (select top 1 c.NickName from AccountsTable c where a.TargetUserID=c.UserID) NickName2
    FROM RecordTable a
    WHERE a.SourceUserID=@dwUserID;