我已经加入了三张桌子..但是我必须展示它们的方式对我来说有点难以理解。我正在尝试将它们分组而不是得到理想的结果。
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
有关详细信息,请参阅此图片
答案 0 :(得分: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
板球印度Tendulkar
足球人你鲁尼
足球人你RVP
足球皇家马德里罗纳尔多
曲棍球N Z Simond
答案 1 :(得分: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'以获得其他结果
答案 2 :(得分: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
子句,以便按运动名称过滤结果。