2016-07-14 8 views
0

Gibt es eine Lösung, um eine MySql query Ergebnis in einer anderen Schleife mit Ruby zu iterieren.Iterate MySql Abfrageergebnis innerhalb einer anderen Schleife in Ruby

mit Ruby mysql Gem

In meinem Code fetch_row werden keine Parameter akzeptieren. Also wird mein Code Fehler zurückgeben.

connection = Mysql.new(@db_host, @db_user, @db_pass, @db_name) 
total_make = connection.query("Select make COUNT(cartype) AS cnt FROM vehicles group by car order by car;") 
result = connection.query("Select make, cartype, COUNT(cartype) AS cnt FROM vehicles where cartype='suv' group by car order by car;") 
suv = 0 
data = "" 
i = 0 
result.each do |row| 
    suv += row[1].to_i 
    total_make.fetch_row(i) 
    data += row[0] + "\n" 
    data += "Total Cars: " + total_make[1] + "\n" 
    data += "Total SUV : " + suv.to_s + "\n" 
    data += "-----------------------\n" 
    data = "" 
    i+=1 
end 

puts data 

MySql Abfrage:

Select make, cartype, COUNT(cartype) AS cnt FROM vehicles where cartype='suv' group by car order by car; 

+-----------+-----------+-----+ 
| make | cartype | cnt | 
+-----------+-----------+-----+ 
| Ford | suv | 2 | 
| Toyota | suv | 3 | 
+-----------+-----------+-----+ 

Select make COUNT(cartype) AS cnt FROM vehicles group by car order by car; 

+-----------+-----+ 
| make | cnt | 
+-----------+-----+ 
| Ford | 4 | 
| Toyota | 5 | 
+-----------+-----+ 

Erwartetes Ergebnis:

Der Versuch, Gruppe Autos nach Marken und Liste insgesamt Autos, insgesamt SUV.

Totota 
Total Cars: 5 
Total SUV : 3 
----------------------- 
Ford 
Total Cars: 4 
Total SUV : 2 
----------------------- 

Antwort

0

Ich bin nicht 100% klar, was es ist, dass Sie genau sind gefragt, oder wie das mysql Juwel in ihren vollen Vorteil zu nutzen, aber das ist, wie ich Ihr erwartetes Ergebnis die Rails Art und Weise produzieren würde .

#in the controller 
@cars = Cars.all 


#in the view 
<% @cars.group_by{|a| a[:make]}.each do |key, group| %> 
    <%= key %><br> 
    Total Cars: <%= group.size %><br> 
    Total SUV: <%= group.where(:cartype => "suv").size %><br> 
    ------------------ 
<% end %> 
+0

Was ich versuche, in einer anderen Schleife in reinem Rubin zu tun ist, 'Iterate MySql Abfrageer way' Sie den Schleifenabschnitt in meinem Code tun überprüfen können. –

0

Versuchen Sie es einfach. Ich habe es aber nicht getestet.

i=0 
result.each do |row| 

total_make.first(i).each do |make| 
make_count_value = make['cnt'] 
end 

data += "Total Cars: " + row['cnt'] "\n" 
data += "Total SUV : " + make_count_value "\n" 
data += "-----------------------\n" 
data = "" 

i=i+1 
end 
+0

Für insgesamt Autos habe ich eine andere MySQL-Abfrage 'total_make'. 'row ['cnt']' gibt das Arbeitsergebnis. –

+0

'fetch_row' akzeptiert keine Parameter. Gibt es einen anderen Weg, um zu iterieren? –

+0

Wenn Sie Schienen verwenden, warum codieren Sie in reinem Rubin? Gibt es einen Grund? Ich bin neugierig? Weil es viel einfacher ist, die Schienen zu machen. –

Verwandte Themen