我有两个彼此相关的不同表格。
第一个表格是tournaments
,并且包含以下字段
tournamentId
tournamentName
tournamentStatus
tournamentBuyIn
tournamentPrizePool
tournamentStart
tournamentEnd
tournamentDuration
tournamentParticipants
第二个表是tourn_results
,其中包含上述锦标赛表的结果。它包含以下字段。
result_id
tournamentId
tournamentName
tournamentDate
playerId
playerName
playerRank
prizeWon
tournamentParticipants
我添加了tournamentName
和tournamentDate
字段,以便在搜索1,000,000多条记录时更轻松。以前我使用以下代码来提取记录。
SELECT r.playerName,
SUM(CASE WHEN r.playerRank = 1 THEN 1 ELSE 0 END) AS 'FirstPlace',
SUM(CASE WHEN r.playerRank = 1 THEN 1 ELSE 0 END)/Count(*)*100 AS 'WinPercent',
SUM(CASE WHEN r.playerRank = 2 THEN 1 else 0 end) AS 'SecondPlace',
SUM(CASE WHEN r.playerRank = 2 THEN 1 ELSE 0 END)/Count(*)*100 AS 'LosePercent',
COUNT(*) AS 'TotalGames'
FROM `tournaments` t
LEFT
JOIN `tourn_results` r
ON r.tournamentId = t.tournamentId
WHERE t.tournamentName LIKE "Royal Flush Daily"
AND t.tournamentStart BETWEEN '2015-06-08 00:00:00' AND '2015-06-08 23:59:59'
AND (r.playerRank = 1 OR r.playerRank = 2)
GROUP
BY r.playerName
ORDER
BY `FirstPlace` ASC
一直在努力弄清楚结果。但是,如果tournamentName
与我的查询匹配,我想查看每天的记录数。我认为最好的方法是将tournamentDate and tournamentName
字段添加到结果数据库中。
我现在需要复制tournamentName
表中的tournaments
以及tournamentDate
BETWEEN '2015-06-08 00:00:00' AND '2015-06-08 23:59:59'
我甚至不知道如何开始。
我将锦标赛缩写为" t _"节省空间
来自tourn_results
result_id t_Id t_Name t_Date playerId playerName playerRank prizeWon t_part
1109985 407452 0000-00-00 3008 hvca410 2 0.000 2
应使用tournaments
表
t_Id t_Name t_Start t_End
407452 Royal Flush Daily 2015-07-16 03:02:00 2015-07-16
新结果应如下所示
result_id t_Id t_Name t_Date playerId playerName playerRank prizeWon t_part
1109985 407452 Royal Flush Daily 2015-07-16 3008 hvca410 2 0.000 2
答案 0 :(得分:1)
目前还不完全清楚你要完成什么,但如果你只想用锦标赛名称和tournamentend日期更新import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.logging.Level;
import java.util.logging.Logger;
public class Test {
public static void main(String[] args) {
String dateText = "18/07/2015 05:30";
DateFormat fechas = new SimpleDateFormat("dd/MM/yyyy hh:mm");
try {
Date parse = fechas.parse(dateText);
System.out.println("Date : " + fechas.format(parse));
} catch (ParseException ex) {
Logger.getLogger(Test.class.getName()).log(Level.SEVERE, null, ex);
}
}
}
表,你可以使用下面的查询来完成:
tourn_results
似乎没有必要复制名称,因为你可以从锦标赛表中得到它,至于日期,如果日期某种程度上与获得结果有关,那会不会更有意义?我猜测还有一些其他桌子可以保存比赛的日期。也许这个日期是你真正想要的?