Данные SQL - кодировать JSON в определенном формате

У меня есть php-код, который я использую вместе с sql для получения результатов из базы данных на основе номера советника и идентификатора для их построения.

<?php   
            $sql=
                ("SELECT D as y,Total as a,PoweredOn as b 
                FROM MasterUsageTable 
                WHERE ID IN 
                (SELECT ID FROM MasterUsageTable
                WHERE EA_Number = '$valueEA' AND D BETWEEN #$valueSDate# AND #$valueEDate#)");

            $rs = odbc_exec($con, $sqlVMs);
            if (!$rs) {
                exit("Enter EA!");
            }
            $data = array();
                while ($row = odbc_fetch_array($rs)){
                    $data[] = $row;
                }           

            echo json_encode($data);
        ?>

В настоящий момент мои результаты после кодирования json выглядят так:

[{"y": "2015-03-26", "a": "16", "b": "14"}, {"y": "2015-03-26", "a": "59 "," b ":" 12 "}, {" y ":" 2015-03-26 "," a ":" 21 "," b ":" 5 "}, {" y ":" 2015-03 -26 "," a ":" 35 "," b ":" 12 "}, {" y ":" 2015-03-26 "," a ":" 17 "," b ":" 2 "} ]

Я надеялся, что есть какой-то способ разделить их следующим образом:

[{"y": "2015-03-26", "a": "16", "b": "14"}, {"y": "2015-03-26", "a": "59 "," b ":" 12 "}, {" y ":" 2015-03-26 "," a ":" 21 "," b ":" 5 "}], [{" y ":" 2015 -03-26 "," a ":" 35 "," b ":" 12 "}, {" y ":" 2015-03-26 "," a ":" 17 "," b ":" 2 "}]

Так что это несколько массивов данных, основанных на том, какой идентификатор это. Надеюсь, что это имеет смысл, спасибо

1 ответ

Решение

Один из способов сделать это - использовать внешний цикл по идентификатору и внутренний цикл для извлечения значений для каждого значения идентификатора, что-то вроде этого:

<?php
// test data
$valueSDate = "2015-03-26";
$valueEDate = "2015-03-26";
$valueEA = "EA1";

$allData = array();
$con = odbc_connect(
        "Driver={Microsoft Access Driver (*.mdb, *.accdb)};" .
        "Dbq=C:\\Users\\Public\\Database1.accdb;",
        "Admin", "");
$rs1 = odbc_exec($con, 
        "SELECT DISTINCT ID " .
        "FROM MasterUsageTable " .
        "WHERE EA_Number = '$valueEA' " .
            "AND D BETWEEN #$valueSDate# AND #$valueEDate#");
while ($row1 = odbc_fetch_array($rs1)) {
    $id = $row1["ID"];
    $rs2 = odbc_exec($con, 
            "SELECT D as y,Total as a,PoweredOn as b " .
            "FROM MasterUsageTable " .
            "WHERE ID = $id AND EA_Number = '$valueEA' " .
                "AND D BETWEEN #$valueSDate# AND #$valueEDate#");
    $idData = array();
    while ($row2 = odbc_fetch_array($rs2)) {
        $idData[] = $row2;
    }
    $allData[] = $idData;
}

echo json_encode($allData);
Другие вопросы по тегам