2013-12-16 1 views
0

У меня возникла проблема при попытке получить имя темы с максимальной меткой. Я использую SQL Server 2008.Получить имя субъекта с максимальной отметкой

У меня было две таблицы следующим образом:

Тема таблице:

create table [Subject] 
(
    SubID int identity(1,1) primary key, 

    SubName nvarchar(30) not null, 

    SubCredit tinyint not null constraint Default_value_Subect default(1) constraint Check_value_Subject check(SubCredit>=1), 

    SubStatus bit constraint default_value_SubStatus default(1) 
) 

Марк стол:

create table Marks 
(
    MarkID int identity(1,1) primary key, 

    SubID int foreign key references [Subject](SubID), 

    StudentID int foreign key references Students(StudentID), 

    Mark float constraint Check_value_Mark check(Mark>=0 and Mark <=100) constraint Default_value_Mark Default(0), 

    ExamTime tinyint constraint Default_value_Examtime default(1) 
) 

Я использовал SQL заявление, чтобы получить SubID с максимальной отметкой:

select Marks.SubID, MAX(Marks.Mark) as diem 
from Marks 
group by Marks.SubID 

, но я хотел получить значение SubName вместо SubID. Как я могу это сделать? Пожалуйста, покажи мне, как! Большое спасибо.

ответ

0

Во-первых, найти тему ID с максимальной отметки, а затем использовать этот идентификатор, чтобы найти субъекта данных:

SELECT * 
FROM [Subject] 
WHERE SubID = 
( -- Max Mark 
    SELECT TOP 1 
    SubID 
    FROM Marks 
    ORDER BY Mark DESC 
) 
2

Здесь метод только с помощью join и order by:

select top 1 s.* 
from subject s join 
    mark m 
    on s.subid = m.subid 
order by m.mark desc; 
Смежные вопросы