在codeigniter中创建包含更多60000行垂直表的报表。如何分页?

时间:2017-02-01 13:03:42

标签: php mysql codeigniter

在我决定发布这个问题之前,已经进行了很多思考过程。试图以简化格式解释我的问题。

我的mySQL表中有2个表,其中一个是用户,另一个是与该用户相关的问题和答案。

简化示例:

用户

| id | name   | registered_on       |
|----|--------|---------------------|
| 1  | Aaron  | 2017-02-01 00:01:02 |
| 2  | Baron  | 2017-02-01 01:01:02 |
| 3  | Chiron | 2017-02-01 02:01:02 |

回答密钥

| id | user_id | keyword | value   | created_on          |
|----|---------|---------|---------|---------------------|
| 1  | 1       | gender  | Male    | 2017-02-01 00:01:02 |
| 2  | 1       | age     | 24      | 2017-02-01 00:01:02 |
| 3  | 2       | gender  | Male    | 2017-02-01 00:01:02 |
| 4  | 2       | age     | Unknown | 2017-02-01 00:01:02 |
| 5  | 3       | gender  | God     | 2017-02-01 00:01:02 |

我希望上面的关系是清楚的。所以我希望实现的是创建一个像这样的CSV报告

| name   | gender | age     | registered_on       |
|--------|--------|---------|---------------------|
| Aaron  | Male   | 24      | 2017-02-01 00:01:02 |
| Baron  | Male   | Unknown | 2017-02-01 01:01:02 |
| Chiron | God    | NULL    | 2017-02-01 02:01:02 |

正如我的研究表明,这可以通过以下方式完成:

  • 准备好的声明(因为CodeIgniter不支持而无法使用)
  • 分页(垂直表是问题)
  • MySQL数据透视表(但使用动态列名称 - 感觉很复杂!)
  • 我不知道的任何其他更好的方式

我正在考虑分页,但我还没弄清楚它是怎么回事 用于垂直表格。如果你们中的任何一个人遇到同样的问题或者有一些有意义的建议,我希望如此!任何帮助表示赞赏!

1 个答案:

答案 0 :(得分:0)

如果我理解你的问题,你想要一个包含所有用户信息的CSV文件,使用答案键作为列吗?

为什么不通过2个查询执行此操作?

首先,您可以在答案表中选择所有不同的键(select distinct keyword...) 然后,使用连接循环创建查询结果:

$this->db->select('u.id, u.name, u.registered_on');
$this->db->from('users u');
foreach($keywords as $i_key => $s_keyword){
    $this->db->join('answers_table at'.$i_key, 'at'.$i_key.'.user_id = u.id', 'left');
    $this->db->select('at'.$i_key.'.value as '.$s_keyword);
}
$a_users = $this->db->get()->result();