2014-10-18 86 views
0

我最近創建了一個錦標賽括號,其中這是SQL。更新多行查詢

CREATE TABLE `".TABLE_PREFIX."tnybracket` ( 
    `id` int(11) NOT NULL auto_increment, 
    `name` varchar(64) NOT NULL, 
    `gid` int(11) NOT NULL, 
    `tid` int(11) NOT NULL, 
    `round` int(11) NOT NULL, 
    `position` int(11) NOT NULL, 
    `player1` varchar(64) NOT NULL, 
    `player1uid` varchar(64) NOT NULL, 
    `player1gt` varchar(64) NOT NULL, 
    `player2` varchar(64) NOT NULL, 
    `player2uid` varchar(64) NOT NULL, 
    `player2gt` varchar(64) NOT NULL, 
    `winner` varchar(64) NOT NULL, 
    `winneruid` varchar(64) NOT NULL, 
    `winnergt` varchar(64) NOT NULL, 
    PRIMARY KEY (`id`) 
) ENGINE=InnoDB DEFAULT CHARSET=latin1; 

我把它設置爲那裏是這些8位,從1經歷8.正如你可以在這裏看到,http://i.gyazo.com/d106e9bac3f4a24f5253a36c498bbedf.png,有8個正確的位置編號空行。現在我試圖做一個更新查詢,它試圖向成員註冊一個成員。但是,在更新用戶名之前,有幾件事需要確定。如果所有player1和player2行都是空的,則根據位置將「用戶名」更新爲player1。 (所以,如果全部都是空的,它會因爲訂單而進入位置1)。然而,如果除了位置1的玩家1之外的所有物品都是空的,那麼它需要將玩家2更新爲位置1.之後,它將繼續前進,直到所有8個位置都按順序填充。 因此,當用戶註冊後,我試圖運行此代碼:

$sql = 'UPDATE MyBB_tnybracket 
     SET player1="$username" 
     WHERE round=1'; 

然而,這顯然是不對的。我需要檢查玩家1和玩家2是否爲空,然後確定要進入哪一個。這是我在完全陷入僵局之前得到的。任何幫助將不勝感激。

編輯: 由於這是相當混亂,我會進一步詳細。下面是表: http://i.gyazo.com/d106e9bac3f4a24f5253a36c498bbedf.png 這裏是它的外觀在我的網站 http://i.gyazo.com/19197e2bda98d8ae4cb3438272f6f10b.png

我已經插入必要的比賽中的所有行,他們只是空白。現在,當成員註冊參加比賽時,我需要在玩家1或玩家2中插入他們的用戶名。例如,如果比賽的所有空白行沒有信息(如表中所示),那麼用戶名但是如果另一個人註冊(而其他人只有2人),那麼他的信息將不得不進入同一行中的玩家2。但是,如果第三方註冊,他將不得不再次進入新的一行,作爲玩家1。而週期基本上重新開始,第四人在新一輪的Player下。

+0

請問您可以爲您的數據創建[sql小提琴](http://sqlfiddle.com/)並請[上傳圖片](http://meta.stackexchange.com/a/75498/218121)到stackoverflow – Ram 2014-10-18 09:11:07

+0

使用一個程序,它會解決你的問題 – 2014-10-18 10:05:12

+0

我試圖添加更多的信息,以幫助你們確定我的問題。 – 2014-10-18 16:16:14

回答

0

IIWM我掰成兩個表:

遊戲:

`id` int(11) NOT NULL auto_increment, 
`name` varchar(64) NOT NULL, 
`gid` int(11) NOT NULL, 
`tid` int(11) NOT NULL, 
`round` int(11) NOT NULL, 
`position` int(11) NOT NULL, 

球員:

`player` varchar(64) NOT NULL, 
`playeruid` varchar(64) NOT NULL, 
`playergt` varchar(64) NOT NULL,  

然後玩家加入到「球員的名單,他們註冊。你的php會在兩者之間做一個連接來彌補括號的遊戲。每當你兩個註冊一個遊戲,你就開始一個新遊戲。

這樣,您不會僅限於初始模式中的8個插槽。