<强>背景

我在MySQL限定的本 “与汇总” 查询:

    SELECT      
        case TRIM(company)
            when 'apple'        THEN 'AAPL'
            when 'microsoft'    THEN 'MSFT'
            else '__xx__'
        END as company        

        ,case TRIM(division)
            when 'hardware'         THEN Trim(division)
            when 'software'         THEN Trim(division)
            else '__xx__'
        END as division

        ,concat( '$' , format(sum(trydollar),0))    as  dollars
    FROM        pivtest
    GROUP BY    
        company, division with rollup        

和它生成这样的输出:

AAPL;hardware;$279,296
AAPL;software;$293,620
AAPL;__xx__;$572,916
MSFT;hardware;$306,045
MSFT;software;$308,097
MSFT;__xx__;$614,142
__xx__;__xx__;$1,187,058

如果您已经在MySQL中使用过“与汇总”查询,可以最有可能推断出我的源表的结构。

<强>问题:

鉴于这种原始输出的MySQL,是什么让像下面这样的“树”结构最简单的方法

AAPL
    hardware;$279,296
    software;$293,620
        Total; $572,916
MSFT
    hardware;$306,045
    software;$308,097
        Total;$614,142
Total    
            $1,187,058
有帮助吗?

解决方案

最简单是做以任何客户端程序你使用的接收和显示用户MySQL的输出 - 绝对的的最容易实现的表现层功能在数据层 - !)所以告诉我们的是在您的客户端程序的语言和C和我们也许能够帮助...

编辑:在给出在原始提问者的要求一个简单的Python客户端解决方案

使用Python的DB API,从DB查询结果可以被简单地大多数视为元组的列表。因此,这里的格式化的结果作为一个功能所需:

def formout(results):
  marker = dict(__xx__='   Total')
  current_stock = None
  for stock, kind, cash in results:
    if stock != current_stock:
      print marker.get(stock, stock).strip()
      current_stock = stock
    if kind in marker and stock in marker:
      kind = ' '*8
    print '    %s;%s' % (marker.get(kind, kind), cash)

marker是字典的特殊标记'__xx__'映射到在输出所希望的字符串(我左填充它适当的“中间”总计,所以当我打印最终“总计”,我.strip()那些空白关闭)。我还用它来检查,其中两个前两列都标记(因为在这种情况下,第二列需要变成空格代替)的特殊情况。随意在评论索要Python的成语和使用任何进一步的澄清,可能是必要的!

下面是输出我看的时候调用此函数与所提供的数据(变成的每个的元组7 3串的列表):

AAPL
    hardware;$279,296
    software;$293,620
       Total;$572,916
MSFT
    hardware;$306,045
    software;$308,097
       Total;$614,142
Total
            ;$1,187,058

在空间的排列是不相同的,我在这个问题看(这是在多少空间应该而言有点矛盾是地方),但我希望这是足够接近你想很容易让什么您可以调整这对您的实际需要(如您在到Python反正转化为PHP,空间调整应该有希望是至少它)。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top