0

RailsとMySqlを使用しています。現時点では、データは次のように表示されます。

Customer A, 5
Customer B, 3
Customer C, 2
Customer A, 2
Customer B, 4

このように表示したい:

Customer A, 7
Customer B, 7
Customer C, 2

現在、私の.html.erbビューは次のようになっています。

<% @licenses.each do |l| %>
<tr>
    <td><%= l.customer.companyname %></td>
    <td><%= l.customer.licensecontact %></td>
    <td><%= l.amount %></td>
    </td>
</tr>
<% end %>

何がわからないので、何かを追加する必要があると@licenses.each確信しています。

4

1 に答える 1

2

あなたから提供されたごくわずかな情報から、GroupBYを使用する必要があると思います

SELECT customer, SUM(quantity) AS quantity FROM orders GROUP BY customer

Rails3の使用

Order.select("customer, SUM(quantity) AS quantity").group("customer")

Rails 2の使用#これはRails3でも機能します

Order.find(:all, :select => "customer, SUM(quantity) AS quantity", :group => "customer")

編集済み

次のようにレコードを修正する必要があります

@licenses = License.find_by_sql("SELECT c.companyname, c.licensecontact, SUM(l.amount) 
                                  FROM licenses l 
                                  LEFT JOIN customers c ON c.id=l.customer_id
                                  GROUP BY c.companyname, c.licensecontact")

ビューを次のように変更します

<% @licenses.each do |l| %>
<tr>
    <td><%= l.companyname %></td>
    <td><%= l.licensecontact %></td>
    <td><%= l.amount %></td>
    </td>
</tr>
<% end %>
于 2012-08-17T09:41:34.843 に答える