从几个用户的两个表中减去两个分数。 Mysql的

时间:2012-11-02 06:59:28

标签: php mysql

我需要访问多个表,实际上它们是相同的表但是旧版本,并且从每个表的每个表获得最大的减去分数。

假设我们表r6和r10有一个名为score的字段。

我需要从两个表中得到分数,然后从旧表(在旧表中)中减去新分数(来自最新表)以获得经理在两个时期之间的分数。

假设表r6对于经理A得分= 1,而表r10对于经理A得分= 5.因此对于经理A,得分为5-1 = 4.这基本上是(r10.scores-r6。得分)这将是totalScore。

现在我需要为所有经理A-Z获得总分数(得分从10-6),并且也能够找到最高分数。

问题是,如何在mysql中实现,如果不可能,你建议什么?我正在使用php btw。

添加信息:

表名:

1- ranking_gw6_260912 AS r6
2- ranking_gw10_201012 AS r10 

使用过的字段:

1- rx.manager_id
2- rx.scores

这两个表中都存在这些字段。

nb gw指的是足球比赛的游戏周,该网站用于幻想足球,我正在努力争取从第6周到第10周比赛得分最高的比赛的胜利者。可悲的是,数据库只存储上周的最新分数超过上一周。所以我不能得到每周得分,因此我留下了整体得分。然而,我们每个星期都有一个备份表,我将使用它来获得得分。

3 个答案:

答案 0 :(得分:3)

由于两个表都存在字段,请使用INNER JOIN

SELECT  r6.manager_ID, (r6.scores - r10.scores) totalScore
FROM    Table1 AS r6
        INNER JOIN  Table2 AS r10 
            ON r6.manager_ID = r10.manager_ID
WHERE   (r6.scores - r10.scores) = 
        (
            SELECT MAX(totalScore)
            FROM
            (
                SELECT  (r6.scores - r10.scores) totalScore
                FROM    Table1 AS r6
                        INNER JOIN  Table2 AS r10 
                            ON r6.manager_ID = r10.manager_ID
            ) cc
        );

SELECT  r6.manager_ID, (r6.scores - r10.scores) totalScoreByHighest
FROM    Table1 AS r6
        INNER JOIN  Table2 AS r10 
            ON r6.manager_ID = r10.manager_ID
ORDER BY totalScoreByHighest DESC

答案 1 :(得分:1)

你可以简单地做

SELECT r10.scores - r6.scores 
    FROM ranking_gw10_201012 AS r10 
    JOIN ranking_gw6_260912 AS r6 ON r6.manager_id = r10.manager_id
ORDER BY r10.scores - r6.scores 

答案 2 :(得分:0)

用PHP或你正在使用的任何语言来做。

当您收到数据循环时,检索每个表的分数,并在运行时减去并记录最高值。除非你拥有数百万经理,否则它将足够快。