2010-10-21 6 views
0

Борясь получает запрос на работу ...... ..SQL Количество запросов не возвращает правильные результаты

У меня есть две таблицы: -

tbl.candidates:

candidate_id agency_business_unit_id

TBL .candidate_employment_tracker

кандидатский номер

Занятость кандидата может иметь дубликаты записей кандидата_id, так как содержит записи по их истории работы для разных клиентов.

Таблицы кандидатов уникальны для каждого кандидата.

Я пытаюсь получить результаты, которые будут группироваться по агентству_business_unit_id и подсчитать количество кандидатов, каждый из которых существует в кандидате_employment_tracker.

E.g.

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

Запрос Я воздействую на это, кажется, не работает, как я получаю количество кандидатов в 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 

Я пробовал несколько подходов и результаты были непоследовательными. Например, я знаю, что один из агентских бизнес-единиц имеет только 1 кандидата, но результат равен 2. Это связано с тем, что этот конкретный кандидат имеет 2 записи в таблице отслеживания вакансий кандидата. Я буду продолжать бить, но любая помощь будет очень признательна.

ответ

3

вам нужно

count(DISTINCT c.candidate_id) 

Это позволит избежать двойного счета, где кандидаты имеют 2 записей в таблице отслеживания кандидатов занятости делать.

+0

О, боже мой, количество запросов, которые я пробовал, и все провалилось. Как только я добавлю DISTINCT в c.candidate_id ..., он работает! – 2010-10-21 10:04:43

+0

Плохо, это сработало, я не принимал во внимание неверный номер NI при сравнении данных. – 2010-10-21 19:32:17

0

Хммм, похоже, это не работает сейчас, когда я смотрю дальше в результаты. Когда я сравниваю кандидатов для бизнес-единицы агентства, я получаю несогласованные цифры подсчета.

+0

Не могу понять, почему это не сработает. Можете ли вы предоставить пример данных, которые воспроизводят проблему. –

Смежные вопросы