簡體   English   中英

在codeigniter中創建一個包含60000行以上垂直表的報表。 如何分頁?

[英]Creating a report with more 60000 rows of a vertical table in codeigniter. How to paginate?

在我決定發布此問題之前,經過了許多思考過程。 試圖以簡化格式解釋我的問題。

我的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數據透視表(但是帶有動態列名-感覺很復雜!)
  • 我不知道的任何其他更好的方法

我正在考慮分頁,但是還沒有弄清楚在垂直表的情況下如何使用它。 如果你們中的任何一個遇到相同的問題或提出了一些有意義的建議,我都非常希望! 任何幫助表示贊賞!

如果我很了解您的問題,您是否想要一個CSV文件,其中包含所有使用答案鍵作為列的用戶信息?

為什么不使用2個查詢執行此操作?

首先,您可以在答案表中選擇所有不同的鍵( select distinct keyword... ),然后使用對結果進行循環的joins創建查詢:

$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();

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM