我目前正在爲我的Magic:The Gathering Playgroup開發一個數據庫,該數據庫可以跟蹤甲板和更具體的哪些甲板贏得多少其他比賽等等。INNER JOIN不適合我
表 「贏得」 如下所示:
- PNR(Playernumber這是在表玩家主鍵)
- DNR(Decknumber這是在表甲板主鍵)
- 日期(與MNR組合的主鍵)
- MNR(一天中的Matchnumber)
- PL(玩家在遊戲中的量)
- LOC(洛卡代碼(包含所有玩家的快捷鍵,例如, AMT的球員亞歷克斯,馬丁和Tobias,見下文)
表的玩家是很容易的:
- PNR
- PNAME(Playersname)
- SC(玩家快捷鍵)
現在我想提出一個查詢,它提供了預期勝率表(在4人遊戲中是1/4,在5人遊戲中是1/5等)以及Wi的實際數量每個玩家的ns(以及後來的預期和實際的Winrate,但我認爲一旦我有了這個寶貝,我就可以自己動手了)。 到目前爲止,我想出了水木清華這樣的:
SELECT a.'Player',a.'ExpectedWinrate',b.'Wins'
FROM(
SELECT
ROUND(((SUM(1/Pl))/Count(*))*100, 1) as 'ExpectedWinrate',
Players.Pname as 'Player'
FROM
Wins, Players
WHERE Code LIKE CONCAT('%', Players.SC, '%')
GROUP BY Players.Pname) a
INNER JOIN
(SELECT
Count(*) as 'Wins',
Players.Pname as 'Players'
FROM Players, Wins
WHERE Players.PNr = Wins.PNr
GROUP BY Players.Pname
ORDER BY Count(*) desc) b ON 'Players' = 'Player';
,我碰到的問題是,我需要在一個查詢中兩個不同的東西COUNT(*),所以我不得不做兩個獨立的人加入他們,但我不知道如何「命名」他們(在這種情況下,我試着用「a」和「b」),以便使用像這樣的表達式。'玩家',a。 'ExpectedWinrate' 等
誰能幫MYSQL福利局^^
greetzSP
編輯:添加expample表...
CREATE TABLE Players
(
PNr int primary key,
Pname varchar(20),
SC varchar(1)
);
INSERT INTO Players
(PNr, Pname, SC)
VALUES
(1, 'Tobias', 'T'),
(2, 'Alex', 'A'),
(3, 'Martin', 'M'),
(4, 'Maria', 'R');
CREATE TABLE Wins
(
PNr int,
DNr int,
Pl int,
Code varchar(10)
);
INSERT INTO Wins
(PNr, DNr, Pl, Code)
VALUES
(1, 13, 3, 'ATM'),
(4, 1, 4, 'RTMA'),
(3, 20, 3, 'RTM');
勝:(留出列在這個查詢中無所謂)
| PNR | DNR | PL | CODE |
|-----|-----|----|------|
| 1 | 13 | 3 | ATM |
| 4 | 1 | 4 | RTMA |
| 3 | 20 | 3 | RTM |
玩家:
| PNR | PNAME | SC |
|-----|--------|----|
| 1 | Tobias | T |
| 2 | Alex | A |
| 3 | Martin | M |
| 4 | Maria | R |
是不明確的數據是如何存儲在表上,您可以張貼在[sqlfiddle(HTTP一些數據和實例:// sqlfiddle.com/)? – Max 2014-09-10 10:54:59
編輯請求的表格數據等在 – 2014-09-10 12:39:21
'但我不知道如何「命名」他們'嘗試'從 贏得b,玩家a' – Horaciux 2014-09-10 13:04:52