mysql - SQL 多重连接与计数

标签 mysql

我需要连接 3 个不同的 MySQL 表:

  • 问题表(代表一个问题)
  • 问题投票表(当 Sign=1 时表示对问题的“喜欢”,当 Sign=0 时表示对问题的“不喜欢”)
  • 答案表(代表包含特定问题答案的表格)。

这三个表的结构如下:

Questions
--------------------------------------------
|  ID  |  UserID  |  Title  |  Body  | Date
--------------------------------------------
|  1  |  32  |  Is it raining?  |  BodyQuestion  | 01/01/2016
|  2  |  45  |  Who are we?  |  BodyQuestion  | 02/02/2016
--------------------------------------------


QuestionsVotes
--------------------------------------------
|  ID  |  QuestionID  |  Sign
--------------------------------------------
|  1   |  1           |  1
|  2   |  2           |  1
|  3   |  1           |  0
|  4   |  1           |  1
|  5   |  2           |  0

Answers
--------------------------------------------
|  ID  |  QuestionID  |  UserID | Body
--------------------------------------------
|  1  |  1  |  45 | Yes, it is.
|  2  |  2  |  10 | Tricky question...
|  3  |  1  |  67 | In Barcelona it is not

我需要的是一个 SQL 查询,在给定问题 ID 的情况下,返回与问题收到的答案数量一样多的行,每个答案包含 Questions.ID、Questions.UserID、Questions.Title、Questions .Body、Questions.Date、与问题相关的喜欢、与问题相关的不喜欢、Answers.ID、Answers.UserID。如您所见,行之间的唯一变化是“答案”字段。

SQL Output (for Question with ID=1)
--------------------------------------------
|  ID  |  UserID  |  Title | Body | Date | Likes | Unlikes | AnswerID | AnswerUserID
--------------------------------------------
|  1  |  32  |  Is it raining? | BodyQuestion | 01/01/2016 | 2 | 1 | 1 | 45
|  1  |  32  |  Is it raining? | BodyQuestion | 01/01/2016 | 2 | 1 | 3 | 67

编辑 1:给出的示例。

最佳答案

试试这个:

SELECT `ID` ,  `UserID`  ,  `Title`, `Body`, `Date`, `Likes`, `Unlikes`, `AnswerID`, `AnswerUserID`
FROM QUESTIONS q
INNER JOIN ANSWERS a ON q.`ID` = a.`QuestionID`
INNER JOIN QuestionVotes v ON q.`ID` = v.`QuestionID`

关于mysql - SQL 多重连接与计数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35515103/

相关文章:

MySQL "source"命令覆盖表

mysql - 执行选择限制字符长度不会返回空值

php - 如何将时间与今天的日期进行比较?

mysql - GUID有什么好的解决方案?

sql - 优化 MySQL 查询(更新 + 子查询)

PHP/MySQL - 查找具有相似或匹配属性的项目

php - mySQL 获取数据到关联数组

MySQL 查询不会停止运行

MySQL - 选择行程次数最多但不重复的项目

python - 查询的值在 Jinja 中显示为元组,但应该是单个字符串