1

結合しようとしている 2 つのテーブルがあり、別の列の最大値と別のテーブルの識別子に基づいて、1 つの列で一意の値を取得します。これが私の構造です。

Partial Table 1 (reward_webuid):
╔════╦═════════╦═════════╦══════════╦═════════════════════╦═════════╗
║ ID ║ WEB_UID ║ ITEM_ID ║ PLAYERID ║      TIMESTAMP      ║ EXPIRED ║
╠════╬═════════╬═════════╬══════════╬═════════════════════╬═════════╣
║  8 ║ 1209520 ║   73410 ║  1926406 ║ 2013-01-05 04:47:06 ║       0 ║
║  9 ║ 1209520 ║   73425 ║  1926406 ║ 2013-01-02 09:40:27 ║       1 ║
║ 10 ║ 1209520 ║   73424 ║  1926406 ║ 2013-01-05 09:40:05 ║       0 ║
║ 11 ║ 1209520 ║   73425 ║  1926406 ║ 2013-01-05 09:40:27 ║       0 ║
║ 12 ║ 1209521 ║   73424 ║ 21555896 ║ 2013-01-05 01:33:20 ║       0 ║
║ 13 ║ 1209521 ║   75000 ║  5599854 ║ 2013-01-05 01:35:09 ║       1 ║
╚════╩═════════╩═════════╩══════════╩═════════════════════╩═════════╝

Partial Table 2 (rewards):
╔═════════╦═════════════════╦══════════════╦═════════════╗
║ ITEM_ID ║ CUST_LOADOUT_ID ║ REWARD_LEVEL ║ EXPIRY_TIME ║
╠═════════╬═════════════════╬══════════════╬═════════════╣
║   73410 ║               1 ║            5 ║           0 ║
║   73424 ║               2 ║           10 ║           0 ║
║   73425 ║               3 ║           15 ║          30 ║
║   75000 ║               4 ║           50 ║          60 ║
╚═════════╩═════════════════╩══════════════╩═════════════╝

私が取得したいもののサンプルリターン (まだ期限切れになっていないテーブル 1 の item_id に基づく報酬レベルの最大値の cust_loadout_id および playerID) は、playerID ごとに 1 つの値のみである必要があります

╔══════════╦═════════════════╗
║ PLAYERID ║ CUST_LOADOUT_ID ║
╠══════════╬═════════════════╣
║  1926406 ║               3 ║
║ 21555896 ║               2 ║
╚══════════╩═════════════════╝

誰かがこれを手伝ってくれるとありがたいです。私は検索し、ほとんどのクエリは同じテーブルまたは 3 つ以上のテーブルに関連していました。私が管理した最善の方法は、必要なデータを返すことですが、正しく順序付けられていませんでした

4

1 に答える 1

1
SELECT  a.*, b.*
FROM    reward_webuid a
        INNER JOIN rewards b
            ON a.item_id = b.item_ID
        INNER JOIN
        (
            SELECT  aa.PLAYERID, MAX(bb.REWARD_LEVEL) maxLevel
            FROM    reward_webuid aa
                    INNER JOIN rewards bb
                        ON aa.item_id = bb.item_ID
            WHERE   aa.expired = 0
            GROUP   BY aa.PLAYERID
        ) c ON  a.PLAYERID = c.PLAYERID AND
                b.REWARD_LEVEL = c.maxLevel AND
                a.Expired = 0
于 2013-01-05T10:34:22.553 に答える