0

我正在使用 Google Charts 绘制饼图。为了绘制它,需要两列格式的数据。绘制谷歌图表的代码在这里没有给出,因为它是未来实现的一部分。为了从数据库中获取数据,我编写了以下代码:

<?php
    $con=mysql_connect("localhost","XYZ","pqrs") or die("Failed to connect with database!!!!");
    mysql_select_db("LMN", $con); 

    $sql  =" SELECT COUNT(*) 'carried_out', SUM(transaction_status = 'success') success, ";
    $sql .=" SUM(transaction_status = 'inprocess') inprocess, SUM(transaction_status = 'fail') fail, ";
    $sql .=" SUM(transaction_status = 'cancelled') cancelled FROM user_transaction GROUP BY transaction_status";

    $sth = mysql_query($sql) or die(mysql_error()); 

    /*$result  = mysql_fetch_array($sth, MYSQL_ASSOC); 
    print_r($result); die;*/
    $rows = array();
    //flag is not needed
    $flag = true;
    $table = array();
    $table['cols'] = array(

    // Labels for your chart, these represent the column titles
    // Note that one column is in "string" format and another one is in "number" format as pie chart only required "numbers" for calculating percentage and string will be used for column title
    array('label' => 'Transaction Category', 'type' => 'string'),
    array('label' => 'Percentage', 'type' => 'number')

);
//print_r($table);

$rows = array();
while($r = mysql_fetch_assoc($sth)) {
    $temp = array();
    // the following line will be used to slice the Pie chart
    $temp[] = array('v' => (string) $r['user_transaction']); 
//print_r($temp);
    // Values of each slice
    $temp[] = array('v' => (int) $r['transaction_count']); 
    //print_r($temp);

    $rows[] = array('c' => $temp);
    //print_r($rows);

}

$table['rows'] = $rows;

//print_r($table);

$jsonTable = json_encode($table);
//echo $jsonTable;


    ?>

如果我执行上述查询,我​​会得到以下结果:

carried_out     success     inprocess   fail    cancelled
18  18  0   0   0
8   0   8   0   0
64  0   0   0   64

但我希望将结果分为两列,名为 transactions_category 和 transaction_count。你能帮我做些什么改变我应该做 SQL 查询以实现这一目标吗?提前致谢。

4

1 回答 1

1

试试这个你的查询

SELECT 'Success' as transactionType, count(*) from user_transaction where transaction_status = 'success';
UNION
SELECT 'In Process' as transactionType, count(*) from user_transaction where transaction_status = 'inprocess'
UNION
SELECT 'Fail' as transactionType, count(*) from user_transaction where transaction_status = 'fail'
UNION
SELECT 'Cancelled' as transactionType, count(*) from user_transaction where transaction_status = 'Cancelled';

使用联合运算符将来自多个查询的结果集组合成一个结果集。

于 2013-07-16T04:01:50.383 回答