mysql"とrollup"クエリ殊ツリー構造
質問
背景:
しています"とrollup"クエリを定義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
いのないようにおかけください"とrollup"のクエリに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のクライアント側の溶液のaskerます。
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とにかく空間に調整すべき期待する以上のものです。