Pour une structure de table assez simple, c.-à-d. Person, Criteria, et PersonCriteria (la combi-table), j'ai mis en place une requête à l'instant qui sélectionne toutes les personnes qui possèdent tous les critères sélectionnés.Requête avancée (?) AND/OR
La requête elle-même ressemble à ceci au moment:
SELECT
p.PersonID
FROM
Person p,
(SELECT DISTINCT PersonID, CriteriaID
FROM PersonCriteria
WHERE CriteriaID in (#list_of_ids#)
) k
WHERE
p.PersonID= k.PersonID
GROUP BY
p.PersonID
HAVING
Count(*) = #Listlength of list_of_ids#
Jusqu'à présent, aucun problème et tout fonctionne bien.
Maintenant, je veux offrir la possibilité à l'utilisateur d'ajouter des variables AND et OR dans leur recherche, à savoir. quelqu'un pourrait dire:
Je cherche une personne qui possède: Critère 1 ET 3 ET 4 (qui serait couvert par la requête ci-dessus) et (5 ou 6 ou 7) et (8 ou 9) et ainsi de suite ...
Je ne sais pas par où commencer avec ce niveau supplémentaire. J'espère que quelqu'un d'autre fait .. :-)
Votre numéro "3" fait bien l'affaire. J'ai dû ajouter Distinct au select, et la performance ne semble pas être trop mauvaise du tout. Merci! –
Oui, j'ai oublié la partie DISTINCT. :) –