在2个表中获得最高价值

时间:2013-05-30 15:00:20

标签: ruby-on-rails mongodb

我试图从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但我不太确定 我试图使用Hash迭代结果,但是当我使用名称作为键时,值被覆盖。

由于 安德鲁

2 个答案:

答案 0 :(得分: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 :(得分:-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.