j'ai une routine d'un à plusieurs schéma, semblable à cet exemple simple:SQL un à plusieurs, comment sélectionner des parents contenant ensemble unique d'enfants
PERSONNE
person_id (PK)
PERSON_TRAIT
person_id (FK)
trait_id (FK)
TRAIT
trait_id (PK)
Nom
// autres attributs
Étant donné un ensemble de traits ("amical, drôle"), comment pourrais-je retourner le person_id associé et la quantité d'enregistrements.
À première vue, je suis tenté d'utiliser cela, mais il est pas simple:
select person_id, quantity
from trait t
inner join person_trait pt on t.trait_id = pt.trait_id
where name in ('friendly', 'funny')
Ce n'est pas correct parce que je pourrais avoir une personne qui contient ces traits plus plus («amical, drôle, maigre ") et il serait retourné. Pour aller plus loin, s'il n'y a pas une personne qui contient exactement tous les traits, comment agréger les traits de plusieurs personnes différentes et retourner un ensemble d'enregistrements de ces valeurs person_id et quantity?
Utilisation de SQL Server 2005.
Cela a abouti à la même question que je suis tombé sur. C'est-à-dire, si j'ai une personne avec les 3 traits "amical, drôle, intelligent" et une autre personne avec les 2 traits "amical, drôle" et je cours la requête sur "amical, drôle", les deux personnes sont retournées. – janusti