У меня есть 2 таблицы со многими ко многим. Рассмотрим приведенный ниже вариант использования
Пациенты
id | Name
---+------------------
1 jack
2 sara
3 patrick
Болезни
id | Disease
---+-----------------
1 Diabetes
2 Cancer
3 Epilepsy
У каждого пациента может быть несколько заболеваний. Таблица соединений:
PatientDisease
Patient_id | Disease_id
-----------+--------------
1 1
1 3
2 2
Я хочу перечислить болезни для каждого пациента.
Попытки
Приведенный ниже запрос создает полукорректный результат для пациента с одним или несколькими заболеваниями:
SELECT
Patients.Name,
Diseases = STUFF((SELECT ',' + dbo.Diseases.Name
FROM dbo.Diseases
FOR XML PATH(''), type).value('.', 'NVARCHAR(MAX)'), 1, 1, '')
FROM dbo.Patients
LEFT JOIN
dbo.PatientDiseases ON PatientDiseases.Patient_Id = Patients.Id
JOIN
dbo.Diseases ON Diseases.Id = PatientDiseases.Disease_Id
Как мне написать запрос, который выдает такой результат?
name | diseases
--------+-------------------
jack | diabetes, Epilepsy
sara | cancer
patrick | NULL