2015-12-24 106 views
-1

我正在嘗試在舊網站上添加一個新網頁,該網頁會顯示哪些玩家贏得了最多的金錢或贏得了比賽,一定年齡根據日期計算年齡並根據比賽結果進行排序

用戶表看起來像這樣

*********************************** 
| id | name | age | bday  | 
| 1 | bob | 15 | 2000-07-30 | 
| 2 | john | 14 | 2001-07-30 | 
| 3 | mary | 13 | 2002-07-30 | 
*********************************** 

的race_results表看起來像這樣

************************************************************ 
| id | raceid | userid | place | winnings | date   | 
| 1 | 1  | 1  | 1  | 1000  | 2006-04-10  | 
| 2 | 1  | 2  | 5  | 50  | 2005-02-15  | 
| 3 | 1  | 3  | 6  | 50  | 2010-06-12  | 
| 4 | 2  | 1  | 1  | 1000  | 2009-05-29  | 
| 5 | 2  | 2  | 3  | 250  | 2003-01-12  | 
************************************************************ 

什麼是查詢最實用的方法是要計算年份[R當鮑勃3歲的時候,他在比賽結果表上看到他在特定的日期範圍內贏得了多少次冠軍?

回答

0
SELECT COUNT(*) 
    FROM 'race_results' 
    INNER JOIN 'user' on user.id = race_results.userid 
    WHERE user.name = 'bob' 
     AND race_results.place = 1 
     AND race_results.date >= ADDDATE(user.bday, INTERVAL 3 YEAR) 
     AND race_results.date < ADDDATE(user.bday, INTERVAL 4 YEAR); 

要獲得所有3年生1砂礦的名單,他們多少次贏了,不只是「鮑勃」 ......

SELECT user.name, COUNT(*) 
    FROM 'race_results' 
    INNER JOIN 'user' on user.id = race_results.userid 
    WHERE race_results.place = 1 
     AND race_results.date >= ADDDATE(user.bday, INTERVAL 3 YEAR) 
     AND race_results.date < ADDDATE(user.bday, INTERVAL 4 YEAR) 
    GROUP BY user.name; 
相關問題