我正在尝试从两个表(问题和答案)中获取数据,并将question_id作为外键,但我收到了多个问题记录。我的答案表包含多个具有相同question_id的记录,输出获取问题记录作为答案值时间。我怎么能避免它,请帮助。
<?php
$sql = "SELECT DISTINCT(questions.question),answers.answers FROM questions INNER JOIN answers ON questions.question_id = answers.question_id" ;
$result = $connection->query($sql);
while($row = $result->fetch_assoc()) {
$question = $row['question'];
$answers = $row['answers'];
?>
在此打印结果......
答案 0 :(得分:1)
这是您的查询:
SELECT DISTINCT(questions.question), answers.answers
FROM questions INNER JOIN
answers
ON questions.question_id = answers.question_id;
我的第一个观察是你不理解DISTINCT
。 SELECT DISTINCT
是关键字。 DISTINCT
会修改SELECT
。它不是一种功能。
其次,您的查询定义的结果集每个问题和答案都有一行。这非常合理 - DISTINCT
不是必需的。
我怀疑你想要一行的答案。当然,你可以用PHP做到这一点。您也可以使用GROUP_CONCAT()
:
SELECT q.question, GROUP_CONCAT(a.answers SEPARATOR '|') as answers
FROM questions q INNER JOIN
answers a
ON q.question_id = a.question_id
GROUP BY q.question;
请注意使用表别名。这些使查询更容易编写和阅读。