2009-12-12 49 views
0

我不能在正確的軌道與此上得到的,任何幫助,將不勝感激MySQL的SELECT加入,按組或東西

我有一個表

+---+----------+---------+-----------+ 
|id | match_id | team_id | player_id | 
+---+----------+---------+-----------+ 
| 1 |  9 |  10 |   5 | 
| 2 |  9 |  10 |   7 | 
| 3 |  9 |  10 |   9 | 
| 4 |  9 |  11 |  12 | 
| 5 |  9 |  11 |  15 | 
| 6 |  9 |  11 |  18 | 
+---+----------+---------+-----------+ 

我想選擇這些有其中,在match_id和雙方團隊的ID,因此產量將

+---------+-------+------+---------+---------+ 
| MATCHID | TEAMA | TEAMB| PLAYERA | PLAYERB | 
+---------+-------+------+---------+---------+  
|  9 | 10 | 11 |  5 |  12 | 
|  9 | 10 | 11 |  7 |  15 | 
|  9 | 10 | 11 |  9 |  18 | 
+---------+-------+------+---------+---------+ 

它可能很簡單,但我卡住了..

在此先感謝

p.s.似乎要忘記我的第一篇文章列,遺憾

+1

爲什麼玩家#5和玩家#12在一排?你用什麼規則呢? – 2009-12-12 14:03:56

+0

是。什麼決定哪兩個球員在同一排? – 2009-12-12 14:06:07

+1

你應該重新考慮你的數據庫設計。你最好用一張表格將球隊與比賽聯繫起來,將一名球員與球隊聯繫起來。這將大大簡化邏輯。 – 2009-12-12 14:11:07

回答

2

我想你需要:

SELECT 
    a.match_id, a.team_id AS TeamA, b.team_id AS teamB, 
    a.player_id AS PlayerA, b.player_id AS PlayerB 
FROM PLayer AS a 
    INNER JOIN Player AS b ON a.match_id = b.match_id 
WHERE a.team_id < b.team_id 

雖然這會給你的每對選手每場比賽,即

+---------+-------+------+---------+---------+ 
| MATCHID | TEAMA | TEAMB| PLAYERA | PLAYERB | 
+---------+-------+------+---------+---------+  
|  9 | 10 | 11 |  5 |  12 | 
|  9 | 10 | 11 |  5 |  15 | 
|  9 | 10 | 11 |  5 |  18 | 
|  9 | 10 | 11 |  7 |  12 | 
|  9 | 10 | 11 |  7 |  15 | 
|  9 | 10 | 11 |  7 |  18 | 
|  9 | 10 | 11 |  9 |  12 | 
|  9 | 10 | 11 |  9 |  15 | 
|  9 | 10 | 11 |  9 |  18 | 
+---------+-------+------+---------+---------+ 

要限制它進一步,你需要一個標準來確定球員應該配對。

1

我認爲重新設計數據庫會更好。

+0

-1無用;沒有指出更好的設計 – Andomar 2009-12-12 14:58:53

0
select MatchA.id as MATCHID, MatchA.team_id as TEAMA, MatchB.team_id as TEAMB, MatchA.player_id as PLAYERA, MatchB.player_id as PLAYERB 
from Match as MatchA, match as MatchB 
where MatchA.id = MatchB.id and MatchA.team_id < MatchB.team_id 
+1

<>會給你10隊11,但也有10隊11。 – Paul 2009-12-12 14:11:55

+0

啊,是的,這是真的。 – 2009-12-12 14:32:28