PDO透视表

时间:2014-02-24 17:38:30

标签: php mysql sql pdo

我有一张表有问题,另一张表有这样的答案:

问题

eventid    questionid    question

答案

eventid    questionid   userid   response

如何进行选择查询,以便每个唯一的用户ID都有1行,其中所有响应都在该行中,并且问题为列标题?

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)或类似的东西。)