我需要连接 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/