2011-07-15 67 views
0

這是最新的:一個子查詢,選擇符合我的條件,然後按職級試圖組通過用戶名和排序結果選擇多條記錄與最大郵戳在MySQL

它沒在指定日期之前的所有記錄似乎沒有工作壽。請注意,也可能有多個人處於同一級別。

SELECT * 
    FROM (SELECT users.userid as userid, 
       users.name as name, 
       leagues.league as league, 
       leagues.datestamp AS datestamp, 
       ranking.ranking as ranking, 
       user_profiles.profile_pic as profile_pic, 
       user_profiles.team as team 
      FROM users 
    LEFT JOIN leagues ON users.userid = leagues.userid 
    LEFT JOIN ranking ON users.userid = ranking.userid 
    LEFT JOIN user_profiles ON users.userid=user_profiles.userid 
     WHERE (leagues.datestamp <= '{$date}' 
      AND leagues.ladder = '3' 
      AND ranking.ladder = '3') 
     ORDER BY datestamp DESC) as t1 
GROUP BY userid 
ORDER BY ranking 
+1

在一個側面說明,非常不包括圍繞數字值的單引號和強制MySQL將這些字符串轉換爲數字的粉絲。有時候這並不符合你的期望。 –

+0

U不需要子查詢中的ORDER BY datestamp DESC ... – Chandu

+0

您是否想要查找所有聯賽中的最大日期戳記或每個聯盟的最大日期戳記? – jtoberon

回答

1

您是否試過簡單的子查詢?

SELECT users.userid as userid, 
     users.name as name, 
     leagues.league as league, 
     leagues.datestamp AS datestamp, 
     ranking.ranking as ranking, 
     user_profiles.profile_pic as profile_pic, 
     user_profiles.team as team 
FROM users 
LEFT JOIN leagues ON users.userid = leagues.userid 
LEFT JOIN ranking ON users.userid = ranking.userid 
LEFT JOIN user_profiles ON users.userid=user_profiles.userid 
WHERE leagues.datestamp = (
    SELECT MAX(datestamp) 
    FROM leagues 
    WHERE leagues.ladder = '3' 
     AND leagues.datestamp <= '{$date}' 
) 
    AND leagues.ladder = '3' 
    AND ranking.ladder = '3' 
ORDER BY ranking 
+0

謝謝你的但注意到我的左連接有一個基本問題 – atomicharri