从3个数据库表中获取数据

时间:2014-12-13 17:55:49

标签: sql sql-server database sql-server-2008

我有3张桌子

  1. Users - 列id, userName, ...
  2. Comment - 列id, text, userId, roomId
  3. CommentRate - 列userId, commmentId
  4. CommentRate表格包含userId个喜欢commentId标识的评论。

    我想从id, text, roomId, userId, userName, []ListOfLikes Comment选择所有评论(roomId),其中[]ListOfLikes应包含userId, userName

1 个答案:

答案 0 :(得分:1)

您可以使用别名使用不同的连接条件多次引用同一个表(在本例中为USER),但无法在字段名称中转换值。此语句将提取您需要的所有内容,但重复行而不是添加列:

SELECT C.ID, C.TEXT, C.ROOMID, U.USERNAME, U2.USERNAME 
FROM  COMMENT C 
INNER JOIN COMMENTRATE CR ON C.ID = CR.COMMENTID
INNER JOIN  USERS U ON C.USERID = U.ID
INNER JOIN  USERS U2 ON CR.USERID = U2.ID
WHERE U.USERNAME IN ('username1', 'username2')
ORDER BY C.ROOMID

如果您希望按喜欢的用户进行过滤,则可以使用U代码行中的U2替换WHERE