【发布时间】:2016-03-09 10:39:56
【问题描述】:
我现在非常需要帮助,因为我的项目因为这个问题而无法完成。这是我的问题:
我有一个表格“调查”。每个调查有 47 个问题,用户将回答这些问题并将其存储到数据库中。我错误地将每 47 个问题存储到 47 行中。这意味着如果有 5 人参加调查,我的表中将有 47*5(行)的总数。所以想象一下我有 10,000 个调查,然后我将有 47*10,000(行)。这影响了我的应用程序和报告的性能。
现在我想要实现的是将每个 47 行转换为 47(列)。 例如 5*47(rows) 会给我 5(rows) 47(columns)
UserID | Q1 | Q2 | Q3 | Q4 |--- |Q47
-----------------------------------------------------
user 1 | Answer1 | answer2 |answer3 |answer 4 | ----answer47
user 2 | Answer1 | answer2 |answer3 |answer 4 | ----answer47
user 3 | Answer1 | answer2 |answer3 |answer 4 | ----answer47
This is my code. The code only transpose the data and groupped by userID, but i want to display all the multiple userID with the corresponding answers. PLEASE HELP ME
$sql = "SELECT agentId,
MAX(IF(questionid= 1, answer, '')) Q1,
MAX(IF(questionid= 2, answer, '')) Q2,
MAX(IF(questionid= 3, answer, '')) Q3,
MAX(IF(questionid= 4, answer, '')) Q4,
MAX(IF(questionid= 43, answer, '')) Q43,
MAX(IF(questionid= 44, answer, '')) Q44,
MAX(IF(questionid= 35, answer, '')) Q45,
MAX(IF(questionid= 46, answer, '')) Q46,
MAX(IF(questionid= 47, answer, '')) Q47,
FROM surveyanswers users GROUP BY agentId ORDER BY agentId";
【问题讨论】:
-
你能解释一下你期望的结果是什么吗?
-
stackoverflow.com/questions/20111418/… 回答这个问题可能有助于解决您的问题。
-
@sagi,这就是我希望我的表格结果看起来像 UserID |第一季度 | Q2 |第三季度 | Q4 |--- | Q47------------------------------------------------ ---- 用户 1 |答案1 |答案2 |答案3 |答案4 | ---- 回答47 用户2 |答案1 |答案2 |答案3 |答案4 | ---- 回答 47 用户 3 |答案1 |答案2 |答案3 |答案4 | ---- 回答47 一个用户可能有超过 100 个调查,而另一个用户有超过 50 个调查。他们对调查问题的所有答案必须显示在 47 列中,每个用户 ID 在每一行上,就像我在表格中显示的那样
-
@UserX 该链接不能解决我的问题。我的数据仍然分组。我不希望它按 angentId 分组。
标签: mysql yii pivot views transpose