2010-11-25 8 views
0

J'ai besoin d'écrire une requête qui effectue les opérations suivantes:Requête SQL, possible de faire dans une requête?

J'ai deux tables:

SalaryRanges: id, beginRange, endRange 
UserInfo: id, salary,... 

Je voudrais avoir une requête qui effectue les opérations suivantes:

Donne-moi une liste de Ids of SalaryRanges où il y a plus de 5 personnes répondant à cette fourchette spécifique pour chaque échelle salariale.

donc quelque chose comme:

SalaryRange ids: 1, 4, 5, 7 ont 5+ personnes répondant à leurs échelles salariales respectives.

Est-ce possible en une seule requête? Ou avez-vous besoin de diviser la requête en différents appels?

Répondre

5

Ceci est juste du haut de ma tête mais je pense qu'il travaillerait

SELECT sr.id 
FROM SalaryRanges AS sr 
INNER JOIN UserInfo AS ui ON ui.Salary >= sr.beginRange AND ui.Salary <= sr.endRange 
GROUP BY sr.id 
HAVING count(ui.id) > 5 

Ok la version mise à jour en utilisant ENTRE selon le commentaire

SELECT sr.id 
FROM SalaryRanges AS sr 
INNER JOIN UserInfo AS ui ON ui.Salary BETWEEN sr.beginRange AND sr.endRange 
GROUP BY sr.id 
HAVING count(ui.id) > 5 

Les deux devraient travailler si

+0

Cela semble bon. J'utiliserais BETWEEN au lieu de> =, <=. –

+0

Assez juste, vous êtes prob droit entre BETWEEN serait plus lisible – Adam

Questions connexes