У меня есть семь таблиц:
- Курс
- Course_Category
- CourseCourse_Category (это таблица мостов между Course и Course_Category)
- TrainerResourceRequirement
- CourseTrainerResourceRequirement (это таблица мостов между Course и TrainerResourceRequirement)
- UnitOfCompetency
- CourseUnitOfCompetency (это таблица мостов между Course и UnitOfCompetency)
Я пытаюсь создать поиск, чтобы вывести список курсов в соответствии с выбранной категорией Course_RecourceRequirement и UnitOfCompetency. Я написал хранимую процедуру, которая выглядит следующим образом:
select CourseName,ClientCourseTitle,CourseDescription,IsTheCourseDisplayedOnWeb, IsTheCourseArchived, minCandidates, maxCandidates,
Course_Category_Name =
STUFF((SELECT ', ' + CC.Course_Category_Name FROM Course_Category as CC
inner join CourseCourse_Category as CCC on CC.Course_CategoryID = CCC.Course_CategoryID
WHERE C.CourseID = CCC.CourseID and CC.Course_CategoryID = @Course_CategoryID
FOR XML PATH(''), TYPE).value('.', 'nvarchar(max)'), 1, 1, ''),
TrainerResourceName =
STUFF((SELECT ', ' + TRR.TrainerResourceName FROM TrainerResourceRequirement as TRR
inner join CourseTrainerResourceRequirement as CTRR on TRR.TrainerResourceRequirementID=CTRR.TrainerResourceRequirementID
WHERE C.CourseID = CTRR.CourseID and TRR.TrainerResourceRequirementID = @TrainerResourceRequirementID
FOR XML PATH(''), TYPE).value('.', 'nvarchar(max)'), 1, 1, ''),
UoC =
STUFF((SELECT ', ' +
UoC.UnitOfCompetencyCode + ' - ' + UoC.UnitOfCompetencyTitle as UnitofCompetencyTitle
FROM UnitOfCompetency as UoC
inner join CourseUnitOfCompetency as CUoC on UoC.UnitOfCompetencyID = CUoC.UnitOfCompetencyID
WHERE C.CourseID = CUoC.CourseID and UoC.UnitOfCompetencyID = @UnitOfCompetencyID
FOR XML PATH(''), TYPE).value('.', 'nvarchar(max)'), 1, 1, '')
FROM Course as C
order by CourseName
Однако, когда я пытаюсь найти результат, получается следующее:
Результат поиска
Но результат должен возвращать только те строки, которые удовлетворяют всем трем условиям.
Как мне реструктурировать мой запрос?
Заранее спасибо