Estou tendo problemas para obter todos os nomes das pessoas e se eles jogam rugby ou não.
Se eles jogarem, mostre o Yes
contrário No
. No momento estou apenas obtendo um único resultado de uma pessoa que joga rugby e outras que não jogam. Alguém pode me ajudar?
SQL atual:
select P1.name, case when S.sport = 'rugby' then 'Yes' else 'No' end as rugby
from Persons P1,
Persons P2,
SportTogether S
where P1.id = S.personA_id
and P2.id = S.personB_id
and S.sport = 'rugby'
group by case when S.sport = 'rugby' then 'Yes' else 'No' end;
Na minha opinião você está usando uma abordagem errada. Você deseja selecionar pessoas, então selecione na tabela de pessoas. Você quer saber se uma pessoa joga rugby, então procure pessoas na mesa de rugby. As pesquisas podem ser feitas com IN
ou EXISTS
.
select
name,
case when exists
(
select null
from sporttogether s
where s.sport = 'rugby'
and p.id in (s.persona_id, s.personb_id)
) then 'Yes' else 'No' end as plays_rugby
from persons p
order by name;
Este artigo é coletado da Internet.
Se houver alguma infração, entre em [email protected] Delete.
deixe-me dizer algumas palavras