2013-01-05 67 views
1

我想連接兩個表,並根據另一列的最大值和另一個表中的標識符獲取一列中的唯一值。這是我的結構。什麼,我想獲得(cust_loadout_id和playerID基於ITEM_ID在表1中尚未到期的獎勵水平的最大值)Mysql連接兩個表時,不同的最大列

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 ║ 
╚═════════╩═════════════════╩══════════════╩═════════════╝ 

採樣返回,應該只有每playerID

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

將不勝感激,如果有人可以幫助這一點。我搜索了大多數與相同表格或3個或更多表格相關的查詢。我已經成功的最好是回到我所需要的數據,但它不是正確排序

回答

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 
+0

感謝JW - 我不得不拋出一個DISTINCT您的選擇上列演示,但它的工作完美。 – user1928477