我有两张桌子:问题和答案
它是关系型的,因此答案中有一个名为question
的列,它直接对应questions
列中的行。我有以下查询:
SELECT questions.id,
questions.question,
questions.author,
questions.date,
answers.answer,
answers.user,
answers.datetime
FROM questions
INNER JOIN answers ON questions.id = answers.question
WHERE tag IN (:arrayIDs)
有3个问题,但只有一个答案与问题相符。
但是,这个MySQL字符串只返回一个问题而不是所有问题。
如何检索所有匹配的问题(如果我使用SELECT
子句进行简单的WHERE
查询,这仍然会返回1个以上的问题)以及答案?< / p>
我做错了什么?
答案 0 :(得分:3)
您正在使用INNER JOIN,它只会为您提供Question记录能够加入答案记录的记录。将其更改为LEFT OUTER JOIN,您应该得到我认为您期望的结果。 LEFT OUTER JOIN将始终为您提供第一个表中的所有记录 - 以及可能的第二个表中的记录。
答案 1 :(得分:2)
试试这个,LEFT JOIN会在没有答案的情况下为您提供所有问题:
SELECT questions.id,
questions.question,
questions.author,
questions.date,
answers.answer,
answers.user,
answers.datetime
FROM questions
LEFT JOIN answers ON questions.id = answers.question
WHERE tag IN (:arrayIDs)