0

我已经加入了三个表..但是我必须显示它们的方式对我来说有点难以理解。我试图将它们分组并没有得到预期的结果。

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

详情请看这张图片

在此处输入图像描述

4

3 回答 3

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 作为组头。

这产生

name team_name player_name
Cricket Australia Ponting
Cricket India Tendulkar
Football Man u Rooney
Football Man u RVP
Football Real Madrid Ronaldo
Hockey NZ Simond

于 2012-09-04T08:07:32.047 回答
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 子句更改为 'Cricket','Hockey' 以获得其他结果

于 2012-09-04T08:07:41.070 回答
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

然后,如果您想像描述的那样显示结果,我的猜测是使用cursor。使用参数化过程WHERE子句添加到查询中,以便按运动名称过滤结果。

于 2012-09-04T08:08:09.520 回答