Сторона сервера DataTables: запрос с GROUP BY и SUM

0

Я использую серверную часть DataTables для отображения моих данных. (пример) (руководство).

Я смог расширить этот инструмент с помощью группы:

echo json_encode(
    SSP::simple( $_GET, $sql_details, $table, $primaryKey, $columns, $groupby )
);

и в классе ssp.class.php

$data = self::sql_exec( $db, $bindings,
    "SELECT SQL_CALC_FOUND_ROWS '".implode("', '", self::pluck($columns, 'db'))."'
     FROM '$table'
     $where
     $groupby
     $order
     $limit"
);

но когда я хочу SUM столбца, я получил сообщение об ошибке, что столбец SUM (GrossPrice) не найден.

Вот как обрабатываются столбцы:

$columns = array(
    array( 'db' => 'ProductDescription',  'dt' => 0 ),
    array( 'db' => 'SUM(GrossPrice)',   'dt' => 1 ),
    array( 'db' => 'SUM(Number)',   'dt' => 2 )
);
Теги:
server-side
jquery-datatables

2 ответа

1

Старый вопрос, но я отвечаю за тех, у кого такая же проблема.

Вы можете использовать этот класс с помощью joinQuery. Мы используем joinQuery, потому что, если мы не используем, класс SSP будет использовать собственные запросы.

$columns = array(
    array('db' => 'x.ProductDescription', 'dt' => 0, 'field' => 'ProductDescription'),
    array('db' => 'SUM(x.GrossPrice) as GrossPrice', 'dt' => 1, 'field' => 'GrossPrice'),
    array('db' => 'SUM(x.Number) as Number', 'dt' => 2, 'field' => 'Number')
);

Пример joinQuery:

$joinQuery = "FROM {$table} AS x";

И назовите это так:

echo json_encode(
   SSP::simple( $_GET, $sql_details, $table, $primaryKey, $columns, $joinQuery)
);

Этот класс настроен для запроса JOIN, но вы можете использовать это. Спасибо Эмрану за этот класс.

1

Я нашел обходное решение:

Я создал представление в mysql с помощью "sum()" -query и просто использовал данные для отображения этого представления.

Надеюсь, что это служит другим людям.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню