построить сводную таблицу с помощью таблицы Google Chart

Я пытаюсь построить таблицу, которая показывает по оси v список свойств, по оси h — список месяцев, и таблица должна быть построена по соответствующим значениям.

Я создал свой объект Json, используя серию запросов и операций, но я наконец-то достиг этого!

Запрос, чтобы получить JSON:

$rows = array();
$table = array();

$table['cols'] = array(
array('label' => 'Fraccao', 'type' => 'string'),
array('label' => 'Data', 'type' => 'date'),
array('label' => 'Valor', 'type' => 'number')
);

$query_detalhes = "SELECT * FROM TbFraccao INNER JOIN TbLocal on TbFraccao.FkLocal=TbLocal.PkLocal INNER JOIN TbEmpresa ON TbLocal.FkEmpresa=TbEmpresa.PkEmpresa";

$result_detalhe = mysqli_query($link, $query_detalhes);

// dados para grafico

$listagem = "";

while( $row_detalhe = mysqli_fetch_assoc($result_detalhe)){
$id_fraccao = $row_detalhe['PkFraccao'];
$id_nome = $row_detalhe['FraccaoNome'];
$id_area = $row_detalhe['FraccaoArea'];
$id_tipo = $row_detalhe['TipoNome'];
$id_local = $row_detalhe['LocalNome'];
$id_dono = $row_detalhe['EmpresaNome'];
$id_morada = $row_detalhe['LocalMorada'];
$id_cp = $row_detalhe['LocalCp'];

$id_coluna_tabel = $id_local . " - " . $id_nome;
// OBTER DATA MAIS ANTIGA
// decidir qual é a data mais velha que me interessa





$query_old_date = "SELECT MIN(ContratoFraccaoInicio) AS INICIO, MAX(ContratoFraccaoFim) AS FIM FROM TbContratoFraccao ORDER BY ContratoFraccaoInicio ASC";
$result_old_date = mysqli_query($link, $query_old_date);

while($datas = mysqli_fetch_assoc($result_old_date)){

$old_date = $datas['INICIO'];
$end_date = $datas['FIM'];


$data_inicio = date('Y-m-d', strtotime($old_date));
$data_fim = date('Y-m-d', strtotime($end_date));


$start    = (new DateTime($data_inicio));
$end      = (new DateTime($data_fim))->modify('first day of next month');
$interval = DateInterval::createFromDateString('1 month');
$period   = new DatePeriod($start, $interval, $end);

foreach ($period as $dt) {
$mes =  $dt->format("Y-m-d");




$query_valor_mes = "SELECT MAX(Data) AS DATAVALOR FROM TbContratoFracaoPreco WHERE FkFraccao='$id_fraccao'  and data<='" . $mes . "'";

$result_valor_mes = mysqli_query($link, $query_valor_mes);

while($row_valor_mes = mysqli_fetch_assoc($result_valor_mes)){
$data_valor = $row_valor_mes['DATAVALOR'];




$query_obter_valor = " SELECT * FROM TbContratoFracaoPreco WHERE FkFraccao='$id_fraccao' and data='" . $data_valor . "'";
$result_obter_valor = mysqli_query($link, $query_obter_valor);

while($row_renda = mysqli_fetch_assoc($result_obter_valor)){

$rent = $row_renda['ContratoFracaoPreco'];
$tabela_fraccao = $row_renda['$id_fraccao'];

$date_year = date('Y', strtotime($mes));
$date_month = date('m', strtotime($mes))-1;
$date_day = date('d', strtotime($mes));

$listing =  "Date(" . $date_year.", " . $date_month .", " . $date_day . ")";

//echo $id_local . ", " . $id_nome . " - ". $mes . " - ". $rent ."<br>";
$temp = array();
$temp[] = array('v' => (string) $id_coluna_tabel);
$temp[] = array('v' => (string) $listing);
$temp[] = array('v' => (float) $rent);
$rows[] = array('c' => $temp);

$table['rows'] = $rows;

$dados_chart = json_encode($table);

};



};
};
};};

После построения объекта Json ($ dados_chart) я определяю таблицу:

google.charts.load('current', {'packages':['table']});
google.charts.setOnLoadCallback(drawChart);

function drawChart() {

var data = new google.visualization.DataTable(<?php echo $dados_chart;?>);

var options = {




};


var table = new google.visualization.Table(document.getElementById('chart'));
table.draw(data, {showRowNumber: false, width: '100%', height: '100%'});


}

Теперь, когда у меня есть таблица, я хочу представить ее как сводную таблицу (довольно просто в Excel !!)

введите описание изображения здесь

Может кто-нибудь, пожалуйста, укажите мне в правильном направлении?

0

Решение

Если вы не хотите выполнять агрегацию самостоятельно (не так просто, как в Excel), вас может заинтересовать делегирование этой работы компоненту Database Engine, но не все базы данных поддерживают сводные таблицы.

PostgreSQL позволяет создавать сводные таблицы с использованием кросс-таблицы в модуле tablefunc.

PostgreSQL Docs — таблица функций

Создание сводных таблиц в PostgreSQL с использованием кросс-таблицы

MariaDB (Форк MySQL) имеет специальный механизм хранения, называемый CONNECT, который имеет

MariaDB документы — поворот в MariaDB

0

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector