有两个表                 user表
字段名
UserID
Password
EmailAddress
DisplayName
UserStateID
Address
OfficePhone
MobilePhone
MSN
PasswordNote
Re
Department
RoleIDrecord表
字段名
RecordID
ProblemID
CreateUser
DateCreated
RecordType
AssignTo
Title
Content
StateID
现在要从record表取ProblemID=9的所有字段(其中AssignTo字段部分对应user表的UserID)
我要取的字段是RecordID,CreateUser,DateCreated,RecordType,user.DisplayName,
但是AssignTo字段里的值不完全对应user表的UserID字段的值,
请问我该如何写啊?

解决方案 »

  1.   

    AssignTo字段里的值不完全对应user表的UserID字段的值是什么意思???SELECT record.RecordID,record.CreateUser,record.DateCreated,record.RecordType,user.DisplayName
    FROM record INNER JOIN user ON record.AssignTo LIKE user.UserID
    WHERE record.ProblemID=9
      

  2.   

    但是AssignTo字段里的值不完全对应user表的UserID字段的值???
    这是什么意思??
      

  3.   

    select r.RecordID,r.CreateUser,r.DateCreated,r.RecordType,u.DisplayName from user u RIGHT OUTER JOIN record r on r.AssignTo=u.UserID
      

  4.   

    少写了一句,试试看,还没测试
    select r.RecordID,r.CreateUser,r.DateCreated,r.RecordType,u.DisplayName from user u RIGHT OUTER JOIN record r on r.AssignTo=u.UserID WHERE r.ProblemID=9
      

  5.   

    如果AssignTo和UserID不对应就不会返回该记录,也就是说AssignTo里有而UserID里没有,或AssignTo里没有而UserID里有的,都不会被选出来。我不知道楼主是不是要这个意思,因为上面那句话实在理解不出楼主想怎样。如果不是这个意思,可以把上面的“INNER” 换成“FULL OUTER”,只要2个表中有一个对应就会返回记录,或换成“LEFT OUTER”,“RIGHT OUTER”以返回其中一张表的所有与另外一张表的对应的那部分。
      

  6.   

    就是AssignTo字段的值有时为0,这时我也要把的record表数据全部取出
      

  7.   

    SELECT RecordID ,CreateUser , DateCreated , RecordType,DisplayName = (SELECT DisplayName FROM user WHERE USERID = record.AssignTo)FROM record WHERE ProblemID=9