Здравствуйте! Я хочу получить список обязанностей пользователя из таблицы ответственности с соответствующим идентификатором user_id из таблицы пользователя, но я получаю дубликаты записей, когда я применил внутреннее соединение к этим таблицам.
Таблица пользователей
Таблица ответственности
и вот запрос.
SELECT DISTINCT u.[user_id],
u.first_name,
u.mobile,
responsibility = Stuff((SELECT ',' + responsibility_nm
FROM dms_responsibility AS dr
WHERE responsibility_id =
dur.responsibility_id
FOR xml path('')), 1, 1, '')
FROM dms_user_responsibilities AS dur
INNER JOIN dms_user AS u
ON u.[user_id] = dur.[user_id]
AND u.territory_cd = dur.territory_cd
GROUP BY u.[user_id],
u.first_name,
dur.responsibility_id,
u.mobile
Этот запрос возвращает дубликаты. но если я попытаюсь получить ответственность без внутреннего соединения, как это, то я получу правильный результат.
select STUFF((select ',' + responsibility_nm from DMS_Responsibility
where responsibility_id in (1,2) FOR XML PATH('')), 1, 1, '') as res
Я запутался, как причинапроблема.