2016-07-01 7 views
0

に保存するには、これを気に入っています。しかし、何も見つからなければ0を表示する必要があります。 をあなたが反復反復レコードを通じ、配列

を必要といけない製品

+0

は、私はあなたがこの使用してSQLクエリを取得することができます –

+0

あなたのテーブル構造を知ることができ –

+0

https://jsfiddle.net/0qunbs20/あなたは第一クエリ結果に答えため – Lamandaas

答えて

0

あなたはこれを試す場合は、次の形式で

SELECT t.name as tier ,month((f.date)) as tmonth,count(*) FROM 
File f inner join Tier t on t.id=f.tier_id group by tier,tmonth; 

TIER1 | JAN | 7 | 
TIER1 | FEB | 5 | 
TIER1 | MAR| 20 | 
TIER2 | JAN | 17 | 
TIER2 |FEB | 14 | 
TIER2 | MAR| 3 | 

を引き起こすれますTHEN

:ティア ティアにhas_many:私は

製品belongs_toのを使用しています

select tier, 
    sum (case when tmonth = 'JAN' THEN cnt END) JAN, 
    sum (case when tmonth = 'FEB' THEN cnt END) FEB, 
    sum (case when tmonth = 'MAR' THEN cnt END) MAR, 
------------------------------------------------- 
-------------------------------------------------// 12 MONTHS 
FROM (SELECT tier,(SELECT t.name as tier ,month((f.date)) as tmonth,count(*) AS cnt FROM 
File f inner join Tier t on t.id=f.tier_id group by tier,tmont) T group by tier; 
+0

何I必要。私はあなたがよりよく視覚化できるように質問を編集しました。 –

+0

感謝を旋回するように持っているが、それはかなりありません – Lamandaas

0

これを1つのクエリで実行するには、th eファイル。これにより、すべての層のfilesが事前にロードされます。コントローラで

、インスタンス変数をこのように設定します。

@tiers = Tier.includes(:files) 

は、あなたの階層モデルにこのような何かをインデックスページで

def months_of_files 
    files.group_by{|file| file.date.strftime("%b")} 
end 

これを追加(この構文はHAMLです)

%table 
    %tr 
    %th Tier 
    - (I18n.t("date.abbr_month_names")).each do |mon| 
     %th= mon 
    = render @tiers 

次に、層(1つの行)をレンダリングすると、ビューで

# tiers/_tier.html.haml 
%tr 
    %td= tier.name 
    - (I18n.t("date.abbr_month_names")).each do |mon| 
    %li= tier.months_of_files[mon].size 
+0

答えに感謝しますが、それは私が必要とするものではありません。私はあなたがよりよく視覚化できるように質問を編集しました。 – Lamandaas

+0

HTMLテーブルが必要ですか? – Swards

+0

私は結果をhtmlテーブルに入れます – Lamandaas