我想显示下面函数的所有数据,但无论何时调用该函数,如果有重复项,MySQL只会返回一行。我的SQL查询有什么问题?
$sql_response1 = "SELECT *
FROM ".TABLE_PREFIX."tests_answers A, ".TABLE_PREFIX."tests_results R, ".TABLE_PREFIX."members M
WHERE A.question_id=".$q_id." AND R.result_id=A.result_id AND R.final_score<>'' AND R.test_id=".$_GET['tid']." AND M.member_id =A.member_id AND M.member_id IN ($in_text)
GROUP BY A.answer ORDER BY A.answer";
$result_responsed = mysql_query($sql_response1, $db);
while ($row_answer = mysql_fetch_array($result_responsed)) {
$x++;
$response_member = $row_answer['first_name'];
$response_answer = $row_answer['answer'];
$response_department = $row_answer['department_name'];
$x--;
$objPHPExcel->getActiveSheet()->setCellValue(A.$x, $response_answer.' '.'('.$response_member.' - '.$response_department.')');
$x++;
}
假设列result_id
有两个值 foo 的实例,只返回一行。如何在没有MySQL截断重复行的情况下显示所有结果?
答案 0 :(得分:2)
您的问题是GROUP BY
组合在一起 - 基本上是折叠 - 具有共同指定值的所有行。在这种情况下,这意味着它只显示一行具有A.answer
的给定值。
答案 1 :(得分:1)
您正在使用仅返回一个结果的GROUP BY
查询,它将删除重复项。如果您尝试对结果进行排序,请使用ORDER BY
,而不使用GROUP BY
。
$sql_response1 = "SELECT *
FROM ".TABLE_PREFIX."tests_answers A, ".TABLE_PREFIX."tests_results R, ".TABLE_PREFIX."members M
WHERE A.question_id=".$q_id." AND R.result_id=A.result_id AND R.final_score<>'' AND R.test_id=".$_GET['tid']." AND M.member_id =A.member_id AND M.member_id IN ($in_text)
ORDER BY A.answer";
有关GROUP BY功能的更多背景信息,请查看W3Schools
上的信息页面