2013-05-30 64 views
0

我想從2個不同的表格中獲得特定用戶的最高分數。在兩個表格中獲得最高價值

例子:

Table 1 
{user=>"Dave", score=>8} 
{user=>"Dave", score=>2} 
{user=>"Frank", score=>5} 

Table 2 
{user=>"Bill", score=>5} 
{user=>"Dave", score=>3} 
{user=>"Frank", score=>7} 

,我想要得到的結果是每個用戶的最高得分,按分數從高到低排序。

戴夫:8 弗蘭克:7 比爾:5

我想也許我需要使用的map/reduce,但我也不太清楚 我試圖用一個哈希通過結果進行迭代,但我正在使用該名稱作爲關鍵字,值被覆蓋。

感謝 安德魯

回答

2

下面是如何實現對Ruby端的排序爲例:

> unsorted = [{:user=>"Bill", :score=>5}, {:user=>"Dave", :score=>3}, {:user=>"Frank", :score=>7}] 
=> [{:user=>"Bill", :score=>5}, {:user=>"Dave", :score=>3}, {:user=>"Frank", :score=>7}] 
> unsorted.sort_by { |r| r[:score] }.reverse 
=> [{:user=>"Frank", :score=>7}, {:user=>"Bill", :score=>5}, {:user=>"Dave", :score=>3}] 
-1

您可以通過名稱連接兩個表做在一個SQL查詢。

SELECT 
    CASE 
     WHEN Table1.score >= Table2.score THEN Table1.score 
     ELSE Table2.score 
    END AS top_score, name 
FROM Table1 join Table2 on Table1.name=Table2.name.