2010-10-21 8 views
0

Luttant obtenir une requête pour travailler ...... ..nombre requête SQL ne pas retourner des résultats corrects

J'ai deux tables: -

tbl.candidates:

candidate_id agency_business_unit_id

TBL .candidate_employment_tracker

candidat_id

L'emploi candidat peut avoir des enregistrements en double d'un candidat_id car il contient des enregistrements sur leur historique de travail pour différents clients.

Les tables de candidats sont uniques pour chaque candidat. J'essaie d'obtenir des résultats qui seront regroupés par agency_business_unit_id et de compter le nombre de candidats qui existent dans le candidat_employment_tracker.

E.g.

Agency Business Unit Id | Candidates 
------------------------------------------------------------ 
100     | 2 
987     | 1 
12      | 90 

La requête que je travaille sur ne semble pas fonctionner comme je reçois le nombre des candidats à candidate_employment_tracker.

SELECT 
    abu.agency_business_unit_id, 
    abu.agency_business_unit_name, 
    count(c.candidate_id) AS candidateCount 
FROM candidate_employment_tracker cet 
INNER JOIN candidate c ON c.candidate_id = cet.candidate_id 
INNER JOIN agency_business_unit abu ON abu.agency_business_unit_id = c.agency_business_unit_id 
WHERE c.candidate_ni_number NOT REGEXP '^[A-CEGHJ-PR-TW-Z][A-CEGHJ-NPR-TW-Z] ?[0-9]{2} ?[0-9]{2} ?[0-9]{2} ?[ABCD]$' 
GROUP BY abu.agency_business_unit_id 
ORDER BY abu.agency_business_unit_name ASC 

J'ai essayé plusieurs approches et les résultats sont incohérents. Par exemple, je sais que l'une des unités d'affaires de l'agence a seulement 1 candidat, mais le résultat est 2. Cela est dû au fait que ce candidat particulier a 2 enregistrements dans la table de suivi de l'emploi candidat. Je vais continuer à dénigrer, mais toute aide serait grandement appréciée.

Répondre

3

Avez-vous besoin

count(DISTINCT c.candidate_id) 

Cela éviterait le double comptage où les candidats ont 2 enregistrements dans le tableau de suivi de l'emploi des candidats.

+0

Oh mon Dieu, le nombre de requêtes que j'ai essayé et j'ai échoué. Dès que j'ajoute un DISTINCT à c.candidate_id .... il semble fonctionner! –

+0

Mon mauvais, cela a fonctionné, je ne prenais pas en compte le numéro de NI invalide lors de la comparaison des données. –

0

Hmmm cela ne semble pas fonctionner maintenant que je regarde plus loin dans les résultats. Quand je compare les candidats pour une unité d'affaires d'agence, j'obtiens des nombres de nombres incohérents.

+0

Je ne vois pas pourquoi cela ne fonctionnerait pas. Pouvez-vous fournir des exemples de données qui reproduisent le problème. –

Questions connexes