2009-12-12 84 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