在与mysqli和php中的表2连接时从表1中获取不同的记录
我试图从两个表中获取数据,问题id为外键的问题和答案,但我得到了多个问题记录。“我的答案”表包含多条具有相同问题id的记录,并且输出获取问题记录作为答案值时间。我怎样才能避免它,请帮忙在与mysqli和php中的表2连接时从表1中获取不同的记录,php,mysql,sql,database,Php,Mysql,Sql,Database,我试图从两个表中获取数据,问题id为外键的问题和答案,但我得到了多个问题记录。“我的答案”表包含多条具有相同问题id的记录,并且输出获取问题记录作为答案值时间。我怎样才能避免它,请帮忙 <?php $sql = "SELECT DISTINCT(questions.question),answers.answers FROM questions INNER JOIN answers ON questions.question_id = answers.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'];
?>
在此处打印结果…这是您的查询:
SELECT DISTINCT(questions.question), answers.answers
FROM questions INNER JOIN
answers
ON questions.question_id = answers.question_id;
我的第一个观察结果是你不明白。SELECT DISTINCT是一个关键字。DISTINCT修改SELECT。它不是一个函数
其次,您的查询定义了一个结果集,每个问题和答案有一行。这是非常合理的,而且没有必要进行区分
我怀疑你想把答案放在一行。当然,您可以在PHP中实现这一点。您也可以使用GROUP_CONCAT:
注意表别名的使用。这些功能使查询更易于编写和读取。您的查询所做的正是它应该做的。你需要编辑你的问题并指定你想让它做什么。我只想一次得到问题,并将相应的答案值作为该问题的数组元素。\u id。这里有一点旁注。存储html标记标记是不明智的。您应该在输出期间使用这些。HTML/PHP/MySQL是不同的动物,应该这样对待。您还可以减少数据库中的数据量。由于答案选项不同,我不能使用GROUP_CONCAT,对吗?每个问题只能得到一个答案选项。@PrudhviMallavarapu。。你试过这个问题了吗?它将答案组合成一个字符串。我忘了在GROUP_CONCAT后面保留“AS”。我现在拿到了,谢谢。
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;