2009-09-23 6 views
0

je 3 tableaux ci-dessous équipes, les joueurs et TxPComment écrire une requête SQL pour la

Table des équipes a les colonnes teamname et TeamID (clé primaire) table joueurs a les colonnes playername et playerId (clé primaire) tableau TxP a les colonnes playerId, ID d'Équipe

Je voudrais écrire une requête pour obtenir le résultat défini comme PlayerName, teamname

Répondre

0
select Teams.TeamName, TxP.PlayerID 
from Teams 
right outer join TxP on TxP.TeamID = Teams.TeamID 
+0

cette requête n'affiche pas le nom du lecteur – Telcontar

0
SELECT Players.PlayerName, Teams.TeamName FROM Players, Teams, TxP 
WHERE Teams.TeamID = TxP.TeamID AND Players.PlayerID = TxP.PlayerID 
0

SELECT A.PlayerName, B.TeamName des joueurs A, B équipes, TxP C OÙ A.PlayerID = C.PlayerID ET B.TeamID = C.TeamID

Cette requête montre que les joueurs asigned au moins une équipe et les équipes avec au moins un joueur

0

Sélectionnez Player.PlayerName, Team.TeamName du joueur, équipe, TXP où Team.TeamId = TXP.TeamId et Player.PlayerId = TXP.PlayerId

1
SELECT Players.PlayerName, Teams.TeamName 
FROM Players 
LEFT JOIN TxP ON Players.PlayerID = TxP.PlayerID 
LEFT JOIN Teams ON TxP.TeamID = Teams.TeamID 
ORDER BY Players.PlayerName 

Ce vous donnera une rangée pour chaque combinaison de joueur et d'équipe, y compris une rangée avec TeamName vide si le joueur n'a pas une équipe.

Pour afficher uniquement les joueurs qui ont des équipes, utilisez simplement les jointures à gauche.


Par exemple, cela pourrait donner:

Bob  Sample United 
Bob  Some other team 
Chris 

Si vous utilisez la normale (intérieure) se joindra à vous n'obtiendrez le résultat Chris. Si un joueur peut avoir plusieurs équipes mais que vous ne voulez qu'un seul résultat, vous aurez besoin d'un GROUP BY et d'une fonction d'agrégation pour regrouper les noms de vos équipes en une seule valeur.

Questions connexes