1

いくつかのテーブルにアクセスする必要があります。実際には、それらは同じテーブルですが古いバージョンであり、各マネージャーの両方のテーブルから減算されたスコアの最大値を取得します。

スコアと呼ばれるフィールドを持つテーブル r6 と r10 があるとします。

2 つのテーブルからスコアを取得し、(最新のテーブルから) 新しいスコアを (古いテーブルの) 古いテーブルから差し引いて、期間間のマネージャーのスコアを取得する必要があります。

たとえば、マネージャー A のテーブル r6 のスコアが 1 で、マネージャー A のテーブル r10 のスコアが 5 であるとします。したがって、マネージャー A の歩留まりスコアは 5-1 = 4 です。 totalScore になります。

ここで、すべてのマネージャー AZ の totalScore (10-6 のスコア) を取得し、最高のマネージャーも見つける必要があります。

問題は、mysqlでそれを達成する方法です。不可能な場合、何を提案しますか? 私はphpを使用しています。

追加情報:

テーブルの名前:

1- ranking_gw6_260912 AS r6
2- ranking_gw10_201012 AS r10 

使用されるフィールド:

1- rx.manager_id
2- rx.scores

これらのフィールドは両方のテーブルに存在します。

nb gw はフットボールの試合の週を指します。このウェブサイトはファンタジー フットボール用で、第 6 試合から第 10 試合までのスコアが最も高いコンテストの勝者を探しています。残念ながら、データベースには最新のスコアしか保存されていません。前の週の on をオーバーライドします。そのため、毎週のスコアを取得できないため、全体のスコアが残ります。それでも、私は毎週のスコアを取得するために使用するバックアップ テーブルを持っています。

4

3 に答える 3

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
于 2012-11-02T07:12:53.600 に答える
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 
于 2012-11-02T07:16:55.363 に答える
0

php、または使用している言語でそれを行います。

データ ループを受信すると、各テーブルのスコアを取得し、ランスルーとして最大値を減算して追跡します。何百万ものマネージャーがいない限り、十分に高速です。

于 2012-11-02T07:09:37.113 に答える