2010-01-13 9 views
1

J'ai une table de noms de personnes et j'ai une autre table de promesses de dons que ces personnes ont faite.Plusieurs critères dans une requête

Ils pourraient mettre en gage l'argent contre l'article 1,2,3 ou 4.

Chaque fois qu'un engagement est fait une entrée est faite dans la table d'engagement avec l'identifiant de la personne et le numéro de promesse qu'ils ont fait.

Je voudrais une requête qui obtient un compte de personnes distinctes qui ont fait des promesses pour 1 et 2 par exemple.

Comment cela peut-il être réalisé?

Un grand merci

Dave

+0

Jetez un oeil à la réponse éditée. Adriaan –

Répondre

1

Vous pouvez essayer en utilisant le EXISTS

SELECT  COUNT(DISTINCT PersonID) DistinctCountPersons 
FROM  pledges p 
WHERE  EXISTS(SELECT * FROM pledges WHERE PersonID = p.PersonID AND ItemID = 1) 
AND  EXISTS(SELECT * FROM pledges WHERE PersonID = p.PersonID AND ItemID = 2) 

EDIT

En ce qui concerne la deuxième partie de la requête, vous pouvez essayer

SELECT p.PersonID, 
     pp.PersonName, 
     SUM(p.Pledge) TotalPledged 
FROM pledges p INNER JOIN 
     people pp ON p.PersonID = pp.PersonID 
WHERE EXISTS(SELECT * FROM pledges WHERE PersonID = p.PersonID AND ItemID = 1) 
AND  EXISTS(SELECT * FROM pledges WHERE PersonID = p.PersonID AND ItemID = 2) 
GROUP BY p.PersonID,pp.PersonName 
+0

C'est fantastique, et rapide !! Semble faire exactement ce dont j'ai besoin, même si je ne suis pas entièrement sûr de comprendre comment cela fonctionne. Mes connaissances SQL sont un peu basiques! Merci quand même – Dave

+0

Puis-je choisir votre cerveau un peu plus s'il vous plaît. Nous avons maintenant cette partie qui fonctionne, ce qui est d'une grande aide, mais maintenant la requête doit aller un peu plus loin. Une autre table contient le nom de la personne liée par la colonne personID. Nous aimerions maintenant obtenir une liste de noms de personnes qui correspondent aux deux critères et aussi combien ils ont promis en tant que total (ceci est contenu dans le tableau des engagements et ils peuvent faire plusieurs promesses pour le même article). Un grand merci Dave – Dave

+0

J'ai mis à jour la réponse, jetez un oeil, et laissez-moi savoir si cela aide, ou si vous avez besoin d'aide supplémentaire. Astander –

Questions connexes