Есть школьный проект, который дается детям в разных классах (только один старший).Второкурсники будут наставниками первокурсников, юниоры будут наставниками второкурсников, а один старший будет наставником юниоров.
Я составил следующие таблицы
CREATE TABLE [dbo].[School](
[Name] [varchar](50) NOT NULL,
[studentID] [varchar](50) primary key NOT NULL,
[MentorID] [varchar](50),
) ON [PRIMARY]
GO
CREATE TABLE [dbo].[PROJECT](
[PID] [int] primary key NOT NULL,
[ProjectName] [varchar](30) NOT NULL,
) ON [PRIMARY]
GO
CREATE TABLE [dbo].[WorksOn](
[SID] [varchar](50) FOREIGN KEY REFERENCES School(studentID) NOT NULL,
[ProjID] [int] FOREIGN KEY REFERENCES PROJECT(PID) NOT NULL,
primary key(SID,PID),
) ON [PRIMARY]
GO
Я пытаюсь написать запрос, который может получить имячеловека самого высокого уровня, работающего над проектом.Таким образом, проект1 может иметь первокурсник, 2 второкурсника и младшего.Он вернет имя этого младшего.
Интересно, стоит ли добавить [GradeLevel]
к школьному столу?Будет ли это проще?
Также, скажем, у project2 есть один новичок и два второкурсника.Он должен вернуть имя двух второкурсников.
edit-query, который я пытаюсь
SELECT p.ProjectName AS "Project", s.Name AS "Highest ranking memeber/s"
FROM PROJECT p
inner JOIN School s
ON p.PID = s.ProjectID
where min(s.Level)-- level 1 being a senior, 2 a junior.
group by PROJECT.ProjectName
, если у Project1 есть bob (первокурсники), jule (sophmore), betty (junior),тогда он должен вернуть betty для project1.