2012-09-04 31 views
0

我有三张表,我已经加入..但我必须展示他们的方式有点难以理解。我试图将它们分组,并没有得到想要的结果。分组SQL表

Sports_Name 

Id | Name 
--------- 
1  Football 
2  Cricket 
3  Hockey 
4  Tenis 


Teams 

Id | Sport_Id | Team_Name 
---------------------------- 
101  1   Manchester United 
103  2   Australia 
104  2   India 
109  1   Real Madrid 
110  3   New Zeland 


Player_Name 

Id | Team_Id | Player_Name 
------------------------------ 
1  101   Rooney 
2  104   Tendulkar 
3  103   Ponting 
4  109   Ronaldo 
5  101   Van Persie 
6  110   Simond 

我需要显示以下方式这一信息..

**Football**  
Manchester United -Rooney 
Manchester United -Van Persie 
Real Madrid -Ronaldo 

**Cricket** 
India-Tendulkar 
Australia-Ponting 

**Hockey** 
New Zeland -Simond 

and something similar for tenis 

看到这张照片的细节

enter image description here

回答

0

这是你想要的吗?

SELECT sports_name.name, teams.team_name, player_name.player_name FROM player_name 
JOIN 
    teams ON 
player_name.team_ID = teams.ID 
JOIN 
    sports_name on 
sports_name.id = teams.sport_id 
order by sports_name.name, team_name 

这得到所有的数据,以便那么你只需要使用你的表现层使用sports.name为组头。

这将产生

名TEAM_NAME PLAYER_NAME
澳大利亚板球庞廷
板球印度德家
足球曼联鲁尼
足球曼联RVP
足球皇马罗纳尔多
曲棍球NZ西蒙德

+0

我需要把它放在一个网格上..像棒球和球队和球员在..wish我可以张贴图像,但我需要赚取10点..有点废话! –

+0

你可以发布一个链接到图像分享网站 - 在评论中。 –

+0

http://www.flickr.com/photos/[email protected]/7929508974/in/photostream –

0

试试这个:

SELECT T.TEAM_NAME+' - '+ P.PLAYER_NAME as 'FOOTBALL' 
FROM TEAMS T JOIN PLAYER_NAME P 
ON  T.ID=P.TEAM_ID 
JOIN SPORTS_NAME S 
ON  T.SPORT_ID=S.ID 
WHERE S.NAME='FOOTBALL' 

更改where子句“蟋蟀”,“曲棍球”,以获得其他结果

0

基本的查询会是这样的:

SELECT  s.Name, t.Name, p.Player_Name 
FROM  Player_Name  p 
INNER JOIN Teams  t 
ON  t.Id = p.Team_id 
INNER JOIN Sports_Name s 
ON  s.Id = t.Sport_Id 

然后,如果你想显示的结果就像你描述它,我的猜测是使用a cursor。使用parameterized procedure可将WHERE子句添加到查询中,以按照运动名称筛选结果。