2011-06-01 5 views
0

J'ai une table appelée équiperequête SQL aider à joindre

je dois choisir un coach qui pourrait aussi être un joueur de l'équipe ....

Les attributs de la table sont (teamid, playerID, rôle)

Je suis en mesure de sélectionner tous les entraîneurs ou les joueurs, mais ne savez pas comment choisir celui qui est à la fois .....

select * 
from isPlaying h 
where h.role= 'Coach'; 

Merci

+0

Que signifie «pourrait» dans cette situation? Y a-t-il une table réservée aux joueurs ou seulement aux entraîneurs? – Bastardo

+0

ID équipe = team1 joueur ID = p1 role = joueur équipe ID = team1 joueur ID = p1 role = entraîneur Cela devrait me donner cette playerID – user779214

Répondre

1
select playerID 
from isPlaying coach join isPlaying player on 
    coach.playerID = player.playerID 
where 
    coach.role = 'Coach' and 
    player.role = 'Player' 
0
Select * 
from isplaying 
where playerid in (
        Select playerid 
        from playerid 
        where role="coach" 
        ); 

Ceci est une requête imbriquée.

+0

l'exigence est "aussi" de sorte que nécessiterait une "OU" dans la clause where. Votre suggestion ne sélectionne que les joueurs qui sont "ARE" entraîneurs. –

0

un moyen rapide et sale pour le faire serait:

select * 
from isPlaying h 
where h.role = 'Player' 
and h.playerID in 
(select playerID from isPlaying where h.role = 'Coach') 

Cela suppose qu'un entraîneur ne pouvait pas jouer pour une autre équipe que lui les entraîneurs pour.

0
SELECT playerID 
    FROM isPlaying 
WHERE role = 'Coach' 
INTERSECT 
SELECT playerID 
    FROM isPlaying 
WHERE role = 'Player';