2015-12-11 4 views
0

У меня было три таблицы, как ORG_DETAILS, DISTRICT_MASTER И WORKER_DETAILS ..получить количество записей из двух таблиц в SQL

Я хочу, подсчет числа организаций и связанных с ними работников рассчитывать, основываясь на district_name. вот вопрос я пытаюсь ......

SELECT dm.DISTRICT_NAME , 
    count(od.Org_ID)as orgcount, 
    count(wd.WORKER_ID)as workerscount 
    from ORG_DETAILS od 
    left join WORKER_DETAILS wd on wd.ORG_ID = od.ORG_ID 
    left join DISTRICT_MASTER dm on od.DISTRICT_ID = dm.DISTRICT_ID 

    GROUP BY dm.DISTRICT_NAME 

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

пожалуйста, помогите мне с этим. ..

спасибо .....

+0

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

ответ

2

Самый простой способ исправить вашу проблему заключается в использовании count(distinct):

SELECT dm.DISTRICT_NAME , 
     count(distinct od.Org_ID)a s orgcount, 
     count(distinct wd.WORKER_ID)as workerscount 
from ORG_DETAILS od left join 
    WORKER_DETAILS wd 
    on wd.ORG_ID = od.ORG_ID left join 
    DISTRICT_MASTER dm 
    on od.DISTRICT_ID = dm.DISTRICT_ID 
GROUP BY dm.DISTRICT_NAME; 

По соображениям производительности, делая агрегацию вдоль каждого измерения до, соединение работает лучше, если подсчеты высоки.

+0

получил это спасибо ... – thiru

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