Мне нужно посчитать количество записей в расписании, порядке и хранить в соответствии с ecode из таблицы сотрудника, используя внутреннее соединение. Когда я использовал TestQuery, запрос считается превосходным, но когда я объединял запрос, используя внутреннее соединение в MainQuery1, я получал неверный результат (из приведенного ниже). Я обнаружил, что результат 3 из тестового запроса не соответствует друг другу и не принимает 0. Пожалуйста, помогите мне в этом. Заранее спасибо.
Мне нужно получить такой результат:
ecode schedulecount noordercount salescount
BUL-SJU-01 135 7 135
BUL-PLA-05 1 0 0
BUL-PLA-03 121 0 120
BUL-MAL-03 128 3 128
BUL-CAL-01 48 10 46
BUL-BOC-01 111 11 111
MainQuery1: Это моя проблема
SELECT
emp.[ecode],
COUNT(sch.[user_id]) as schedulecount,
COUNT(ord.[ecode]) as noordercount,
COUNT(sto.[ecode]) as salescount
FROM [mydb].[dbo].[employee] as emp
INNER JOIN [mydb].[dbo].[schedule] as sch
ON sch.[user_id] = emp.[ecode]
INNER JOIN [mydb].[dbo].[order] as ord
ON ord.[ecode] = emp.[ecode]
INNER JOIN [mydb].[dbo].[store] as sto
ON sto.[ecode] = emp.[ecode]
GROUP BY
emp.[ecode]
ORDER BY
emp.[ecode] DESC;
Неверный результат:
ecode schedulecount noordercount salescount
BUL-SJU-01 127575 127575 127575
BUL-MAL-03 49152 49152 49152
BUL-CAL-01 22080 22080 22080
BUL-BOC-01 135531 135531 135531
TestQuery1:
SELECT
emp.[ecode],
COUNT(sch.[user_id]) as schedulecount
FROM [mydb].[dbo].[employee] as emp
INNER JOIN [mydb].[dbo].[schedule] as sch
ON sch.[user_id] = emp.[ecode]
GROUP BY
emp.[ecode]
ORDER BY
emp.[ecode] DESC;
Результат:
ecode schedulecount
BUL-SJU-01 135
BUL-PLA-05 1
BUL-PLA-03 121
BUL-MAL-03 128
BUL-CAL-01 48
BUL-BOC-01 111
TestQuery2:
SELECT
emp.[ecode],
COUNT(ord.[ecode]) as schedulecount
FROM [mydb].[dbo].[employee] as emp
INNER JOIN [mydb].[dbo].[order] as ord
ON ord.[ecode] = emp.[ecode]
GROUP BY
emp.[ecode]
ORDER BY
emp.[ecode] DESC;
Результат:
ecode schedulecount
BUL-SJU-01 7
BUL-MAL-03 3
BUL-CAL-01 10
BUL-BOC-01 11
TestQuery3:
SELECT
emp.[ecode],
COUNT(sto.[ecode]) as salescount
FROM [mydb].[dbo].[employee] as emp
INNER JOIN [Z_ALI].[dbo].[M_STORE] as sto
ON sto.[ecode] = emp.[ecode]
GROUP BY
emp.[ecode]
ORDER BY
emp.[ecode] DESC;
Результат:
ecode salescount
BUL-SJU-01 135
BUL-PLA-03 120
BUL-MAL-03 128
BUL-CAL-01 46
BUL-BOC-01 111