我有3张桌子
Users
- 列id, userName,
... Comment
- 列id, text, userId, roomId
CommentRate
- 列userId, commmentId
CommentRate
表格包含userId
个喜欢commentId
标识的评论。
我想从id, text, roomId, userId, userName, []ListOfLikes
Comment
选择所有评论(roomId
),其中[]ListOfLikes
应包含userId, userName
。
答案 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
。