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

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

我有3张 table

  1. Users - 列 id, userName,...
  2. Comment - 列 id, text, userId, roomId
  3. CommentRate - 列 userId, commmentId

CommentRate 表包含喜欢由 commentId 标识的此评论的 userId

我想通过 roomIdComment 表中选择所有评论(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/

相关文章:

php - 'xyz' 中的未知列 'where clause'

sql - 如何使用列中的 MAX 值更新列以添加自动增量?

php - 相似词如何匹配?

mysql - sql简单初学者操作

php - SQL中如何实现多个表的全局自增id?

php - 无法从数据库检索列信息

asp.net - 设置 Orchard 开发工作区

SQL - 从动态 SQL 中获取百分比差异

c# - 如果与 async/await 一起使用(使用 Dapper 从 SQL Server 流式传输数据),返回 IEnumerable 会发生什么情况?

database - 微软 Access : Can't change the file type in the Save As dialog box