我有一张表有问题,另一张表有这样的答案:
问题
eventid questionid question
答案
eventid questionid userid response
如何进行选择查询,以便每个唯一的用户ID都有1行,其中所有响应都在该行中,并且问题为列标题?
答案 0 :(得分:1)
实际上没有办法创建一个具有可变列数的简单SQL语句。我会加入这两个表并做这样的事情:
$lastUserID = null;
$results = array();
foreach ($statement as $row) {
if ($row['userid'] != $lastUserID) {
$lastUserID = $row['userid'];
$results[$lastUserID] = array();
}
$results[$lastUserID][$row['question']] = $row['response'];
}
请记住,如果函数注释中没有足够的文档,您应该避免使用这样的嵌套数组数据结构。您可能还希望创建一个类来包装此$ results数组(例如getUserIDs(),getQuestionToAnswerMapping($ userID)或类似的东西。)