从mysqli&中的表2中获取表1中的不同记录。 PHP

时间:2018-02-10 13:20:29

标签: php mysql sql database

我正在尝试从两个表(问题和答案)中获取数据,并将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'];
?>

在此打印结果......

1 个答案:

答案 0 :(得分:1)

这是您的查询:

SELECT DISTINCT(questions.question), answers.answers
FROM questions INNER JOIN
     answers
     ON questions.question_id = answers.question_id;

我的第一个观察是你不理解DISTINCTSELECT 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;

请注意使用表别名。这些使查询更容易编写和阅读。