2016-12-22 2 views
0

У меня есть SQL результат этой формы:Присвоение нескольких значений результатов SQL к тому же ключевому

Id Amount1 Amount2 Amount3 
1 10  10  12 
2 20  13  14 
3 30  15  15 

Я пытаюсь сохранить идентификатор ключа и все другие значения стоимости

что-то вроде этого :

{1=>{:Amount1=>"10", :Amount2=>"10", :Amount3=>"12"}, 2=>{:Amount1=>"20", :Amount2=>"13", :Amount3=>"14"}} 

Это то, что я в настоящее время до сих пор:

hashn = Hash.new 

    sqlresult.each { |x| 
    hashn[x['PPS_Id']] = x['Gift_Card_Amount1'] 
    hashn[x['PPS_Id']] = x['Gift_Card_Amount2'] 
    hashn[x['PPS_Id']] = x['Gift_Card_Amount3'] 
} 

Я считаю, что это переопределяет предыдущее значение, вы можете помочь.

ответ

1

Вы можете присвоить массив хэш-ключа, а

Что-то вроде folllowing

hashn= {} 

    sqlresult.each { |x| 
    hashn[x['PPS_Id']] = [] unless hashn[x['PPS_Id']] 
    hashn[x['PPS_Id']] << x['Gift_Card_Amount1'] 
    hashn[x['PPS_Id']] << x['Gift_Card_Amount2'] 
    hashn[x['PPS_Id']] << x['Gift_Card_Amount3'] 
    } 
0

Если предположить, что Sql Результат является активным сбор записи, это должно работать:

required_hash = {} 
sqlresult.each do |obj| 
    required_hash[obj.id] = 
    { amount1: obj.amount1, amount2: obj.amount2, amount3: obj.amount3 } 
end 
required_hash 
Смежные вопросы