加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

php – 与其他表连接的数据透视表

发布时间:2020-12-13 15:57:02 所属栏目:PHP教程 来源:网络整理
导读:我想问一下与其他表联系的数据透视表.它的外观如下: 结果 | DATE | A | B | C | D ||-----------|---|----|----|----||2015-06-01 |10 | 20 | 30 | 20 ||2015-06-02 |20 | 30 | 40 | 20 ||2015-06-03 |40 | 10 | 10 | 20 | 该表来自以下两个表: 表大师 |ID
我想问一下与其他表联系的数据透视表.它的外观如下:

结果

|   DATE    | A | B  | C  | D  |
|-----------|---|----|----|----|
|2015-06-01 |10 | 20 | 30 | 20 |
|2015-06-02 |20 | 30 | 40 | 20 |
|2015-06-03 |40 | 10 | 10 | 20 |

该表来自以下两个表:

表大师

|ID|Type|
|--|----|
|1 |A   |
|2 |B   |
|3 |C   |

表类型

|ID|Date      | idType |value|
|--|----------|--------|-----|
|1 |2015-06-01| 1      | 10  |
|2 |2015-06-01| 2      | 20  |
|3 |2015-06-01| 3      | 30  |
|4 |2015-06-01| 4      | 20  |
|5 |2015-06-02| 1      | 20  |
|6 |2015-06-02| 2      | 30  |
|7 |2015-06-02| 3      | 40  |
|8 |2015-06-02| 4      | 20  |
|9 |2015-06-03| 1      | 40  |
|10|2015-06-03| 2      | 10  |
|11|2015-06-03| 3      | 10  |
|12|2015-06-03| 4      | 20  |

我在下面尝试了这个代码,但它不是succsess.

SELECT * FROM ( SELECT tgl_nab,idtype,nilai FROM jts_test ) src pivot (sum(nilai) for idtype in ([1],[2],[3],[4]) ) piv;

错误显示如下:

You have an error in your SQL syntax; check the manual that
corresponds to your MySQL server version for the right syntax to use
near ‘pivot (sum(nilai) for idtype in ([1],[4]) ) piv LIMIT
0,25’ at line 1

我也有其他相关的问题.如何在视图codeigniter中显示结果表.假设我有一个控制器来选择所有数据,如下面的代码:

public function test()
{
if($this->session->userdata('logged_in'))
{
$session_data = $this->session->userdata('logged_in');
$data['test'] = $this->report_m->get_allcontentest();
$this->load->view('header');
$this->load->view('report/test_list_view',$data);
$this->load->view('footer');
} else {
    redirect('login');
}
}

我不知道模型是如何工作的,它是否写出与获得结果时相同的查询.或者还有其他方式.
在视图中它也很复杂.这是我的观点.

<div class="box-body table-responsive">
          <table id="datatable" class="table table-bordered table-hover">
            <thead>
              <tr>
                <th>No</th>
                <th><?php echo $baris->type; ?></th>
                <th>Created At</th>
                <th>Menu</th>
              </tr>
            </thead>
            <tbody>
              <?php
                foreach($report as $baris){
              ?>
              <tr>
                <td><?php echo $baris->id; ?></td>
                <td><?php echo $baris->nilai; ?></td>
                <td><?php echo $baris->create; ?></td>
                <td>
                  <a href="#" class="fa fa-eye"></a>
                </td>
              </tr>
              <?php
                }
              ?>
            </tbody>
          </table>
        </div>

真的很高兴你的帮助.

解决方法

您可以使用动态交叉表:

SQL Fiddle

SET @sql = NULL;

SELECT
  GROUP_CONCAT(DISTINCT
    CONCAT(
      'MAX(CASE WHEN m.idType = ',Id,' THEN value END) AS ',Type
    )
  ) INTO @sql
FROM tblType;

SET @sql =
  CONCAT('SELECT m.Date,',@sql,' FROM tblMaster m INNER JOIN tblType t ON t.Id = m.idType GROUP BY m.Date ORDER BY m.Date');


PREPARE stmt FROM @sql;
EXECUTE stmt;
DEALLOCATE PREPARE stmt;

有关动态枢轴的更多信息,请阅读此article.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读