Je les tableaux suivants:
personne, { "id", "Nom", "LastName"}
sports, { "id" "Nom", "Type"}
SportsPerPerson, { "id", "PersonId", "SportsId"}Cette requête sql peut-elle être simplifiée?
Pour ma recherche je veux obtenir toutes les personnes qui excisent un sport spécifique alors que j'ai seulement l'attribut Sports "Nom" à ma disposition. Pour récupérer les lignes correctes j'ai compris les requêtes suivantes:
SELECT *
FROM Person
WHERE Person.Id in
(
SELECT SportsPerPerson.PersonId FROM SportsPerPerson
INNER JOIN Sports on SportsPerPerson.SportsId = Sports.Id
WHERE Sports.Name = 'Tennis'
)
AND Person.Id in
(
SELECT SportsPerPerson.PersonId FROM SportsPerPerson
INNER JOIN Sports on SportsPerPerson.SportsId = Sports.Id
WHERE Sports.Name = 'Soccer'
)
OU
SELECT *
FROM Person
WHERE Id IN
(SELECT PersonId FROM SportsPerPerson WHERE SportsId IN
(SELECT Id FROM Sports WHERE Name = 'Tennis'))
AND Id IN
(SELECT PersonId FROM SportsPerPerson WHERE SportsId IN
(SELECT Id FROM Sports WHERE Name = 'Soccer'))
Maintenant, ma question est, est pas là un moyen plus facile d'écrire cette requête? Utiliser juste OU ne fonctionnera pas parce que j'ai besoin de la personne qui joue 'Tennis' ET 'Soccer'. Mais utiliser AND ne fonctionne pas non plus car les valeurs ne sont pas sur la même ligne.
Celui-ci fait l'affaire:] – Bas