我有3张 table
Users
- 列id, userName,
...Comment
- 列id, text, userId, roomId
CommentRate
- 列userId, commmentId
CommentRate
表包含喜欢由 commentId
标识的此评论的 userId
。
我想通过 roomId
从 Comment
表中选择所有评论(id, text, roomId, userId, userName, []ListOfLikes
)其中 []ListOfLikes
应包含 userId, userName
。
最佳答案
您可以使用别名使用不同的连接条件多次引用同一个表(在本例中为 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
如果你想按喜欢的用户进行过滤,你可以在 WHERE
代码行中将 U
替换为 U2
。
关于sql - 从 3 个数据库表中获取数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27461911/