2016-07-14 2 views
0

Есть ли какое-либо решение для повторения одного результата MySql query в другом цикле с использованием ruby.Результат запроса Iterate MySql внутри другого цикла в Ruby

Использование Рубин mysql Gem

В моем коде fetch_row не принимает никаких параметров. поэтому мой код вернет ошибку.

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 запросов:

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 | 
+-----------+-----+ 

Ожидаемый результат:

Попытка группы автомобилей по маркам и список общих автомобилей, общая сув.

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

ответ

0

Я не 100% ясно, на что вы просите именно, или как использовать mysql драгоценный камень в его полное преимущество, но это, как я бы производить свой ожидаемый результат как Rails ,

#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

То, что я пытаюсь сделать, это «Итерировать результат запроса MySql внутри другого цикла в чистом рубиновом режиме», вы можете проверить раздел цикла do в моем коде. –

0

Просто попробуйте это. Однако я его не тестировал.

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

Для всех автомобилей у меня есть другой mysql-запрос 'total_make'. 'row ['cnt']' wil дать рабочий результат. –

+0

'fetch_row' не принимает никаких параметров. есть ли другой способ итерации. –

+0

, если вы используете рельсы, почему вы кодируете чистый рубин? Есть ли причина? Мне интересно? Потому что использование рельсов делает его намного проще. –

Смежные вопросы