0

結合したテーブルが3つありますが、それらを表示する方法が少しわかりにくいです。グループ化しようとしていますが、目的の結果が得られません。

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

次に、説明したような結果を表示したい場合は、カーソルを使用すると思います。パラメータ化されたプロシージャを使用WHEREして、スポーツの名前で結果をフィルタリングするために、クエリに句を追加します。

于 2012-09-04T08:08:09.520 に答える