Я занимаюсь разработкой веб-приложения, и теперь мне нужно, чтобы это приложение могло генерировать некоторые отчеты из своей базы данных.У меня огромная база данных с довольно сложной структурой.Я придумал большой SQL-запрос, и он работал нормально, пока я немного не изменил структуру базы данных.Я изменил его в соответствии с этими изменениями, но все равно он не работает.Я проверил это в SQLServer Management Studio и потерпел неудачу.Иногда это говорит мне, что ошибка с синтаксисом.Иногда мне сообщают, что ошибка с ''.
Простая структура базы данных:
Таблица сотрудников: Имя, Имя пользователя, JobTitle, BadgeNo, EmpOrgType, DivisionID
Таблица отделов: DepartmentCode, DepartmentName
таблица курсов: CourseID, CourseName, GroupID
таблица групп: GroupID, GroupName
employee_courses: employeeID, courseID
Первый атрибут в каждой таблице является первичным ключом каждой таблицы, за исключением последней таблицы,Таблица employee_courses.
Запрос:
select *
from
(SELECT TOP (100) PERCENT
dbo.Divisions.DivisionName,
dbo.employee.EmpOrgType,
dbo.employee.Name,
T1.Username,
courses_2.CourseName,
CASE WHEN dbo.employee_courses.courseId IS NULL THEN '' ''
ELSE ''Yes'' END AS CourseId
FROM dbo.employee_courses
RIGHT OUTER JOIN dbo.courses AS courses_2
INNER JOIN (SELECT employee_1.Username,
courses_1.CourseID
FROM dbo.employee AS employee_1
CROSS JOIN dbo.courses AS courses_1)
AS T1 ON courses_2.CourseID = T1.CourseID
INNER JOIN dbo.employee ON T1.Username = dbo.employee.Username
ON dbo.employee_courses.employeeId = T1.Username AND
dbo.employee_courses.courseId = T1.CourseID
ORDER BY T1.Username
) DataTable
Этот запрос должен получить информацию о сотруднике: Имя, Имя пользователя, JobTitle, BadgeNo, EmpOrgType и DivisionName.Затем он должен отобразить курсы, которые он взял из таблицы курсов, с указанием GroupName этих пройденных курсов.