我正在就即將舉行的世界盃問題開展一個小型項目。我正在根據國家隊的小組建立名冊/排行榜/計分卡。這個想法是獲得關於組內所有即將到來的比賽的信息或者在淘汰賽階段(比賽得分,比賽時間,比賽數據等)的信息。目前,我在數據庫中遇到了問題,因爲我無法想出一個能夠返回成對隊伍的查詢。我有這3個表格:Mysql多對多問題(leaderborad/scoreboard)
CREATE TABLE IF NOT EXISTS `wc_team` (
`id` INT NOT NULL AUTO_INCREMENT ,
`name` VARCHAR(45) NULL ,
`description` VARCHAR(250) NULL ,
`flag` VARCHAR(45) NULL ,
`image` VARCHAR(45) NULL ,
`added` TIMESTAMP NULL DEFAULT CURRENT_TIMESTAMP ,
PRIMARY KEY (`id`) ,
CREATE TABLE IF NOT EXISTS `wc_match` (
`id` INT NOT NULL AUTO_INCREMENT ,
`score` VARCHAR(6) NULL ,
`date` DATE NULL ,
`time` VARCHAR(45) NULL ,
`added` TIMESTAMP NULL DEFAULT CURRENT_TIMESTAMP ,
PRIMARY KEY (`id`) ,
CREATE TABLE IF NOT EXISTS `wc_team_has_match` (
`wc_team_id` INT NOT NULL ,
`wc_match_id` INT NOT NULL ,
PRIMARY KEY (`wc_team_id`, `wc_match_id`) ,
我簡化了表格,所以我們不會走錯方向。現在我嘗試了一些我能想到的連接和分組,但我似乎從未得到過。
例子查詢:
SELECT t.wc_team_id, t.wc_match_id, c.id.c.name, d.id, d.name
FROM wc_team_has_match AS t
LEFT JOIN wc_match AS s ON t.wc_match_id = s.id
LEFT JOIN wc_team AS c ON t.wc_team_id = c.id
LEFT JOIN wc_team AS d ON t.wc_team_id = d.id
將返回:
wc_team_id wc_match_id id name id name
16 5 16 Brazil 16 Brazil
18 5 18 Argentina 18 Argentina
但我真正想要的是:
wc_team_id wc_match_id id name id name
16 5 16 Brazil 18 Argentina
請記住,一組有更多的比賽我想看到所有這些比賽不僅僅是一個。
任何指針或建議將非常讚賞,因爲我被困在這一個像一個鴨子:)。
尼斯之一。我總是傾向於過分複雜:)。謝謝你的擡頭。 – zoko2902 2010-05-14 09:58:06
淘汰賽階段paire將在稍後知道的時候輸入。所以我在桌子上設置了一個場地,因爲有幾個杯子。 – zoko2902 2010-05-14 10:24:28