Эта хранимая процедура должна:Использование хранимой процедуры для извлечения данных
Возьмите
userid
иDate
в качестве входных параметровПроверить, принадлежит ли это
Id
к учителю или ученикуЕсли пользователь является студентом, он должен выводить предметы своего дня и то, что каждый из них обсудит.
Если пользователь учитель, он должен выводить свои дневные занятия и то, чему он будет учить в каждом из них.
Таблицы, которые я использую:
WeeklyPlan (Id, Date, Lesson, Plan)
,Subject (Name, Id)
,Student (userid, name, class)
,Teacher (name, userid)
,TimeTable (subject, day, class)
.
Теперь я написал эту хранимую процедуру (которая должна делать то, что написано выше), но это не так.
Не могли бы вы проверить его? & Дайте мне идеи, если я написал это неправильно? И если я задам вопрос по-другому, скажите, пожалуйста.
ALTER PROCEDURE dbo.GetDaySubjects
(
@UserId int,
@DateToday DateTime
)
AS
IF EXISTS(SELECT Std_UserID
FROM Student
WHERE (Std_UserID = @UserId))
BEGIN
SELECT WeeklyPlan.Wkp_Body, WeeklyPlan.Wkp_Date, WeeklyPlan.Wkp_lesson
FROM Class INNER JOIN
Student ON Class.Cls_ID = Student.Std_Class INNER JOIN
TimeTable ON Class.Cls_ID = TimeTable.Ttb_Class INNER JOIN
Subject ON TimeTable.Ttb_Subject = Subject.sbj_ID INNER JOIN
WeeklyPlan ON Subject.sbj_Name = WeeklyPlan.Wkp_lesson
WHERE (WeeklyPlan.Wkp_Date = @DateToday)
END
ELSE IF EXISTS(SELECT Tch_UserID
FROM Teacher
WHERE (Tch_UserID = @UserId))
BEGIN
SELECT TimeTable.Ttb_Class, WeeklyPlan.Wkp_lesson, WeeklyPlan.Wkp_Body, Teacher.Tch_ID
FROM Subject INNER JOIN
TimeTable ON Subject.sbj_ID = TimeTable.Ttb_Subject INNER JOIN
WeeklyPlan ON Subject.sbj_Name = WeeklyPlan.Wkp_lesson INNER JOIN
Teacher ON TimeTable.Ttb_Teacher = Teacher.Tch_ID
WHERE (WeeklyPlan.Wkp_Date = @DateToday)
END
Большое вам спасибо.
Когда я вижу такой список всех вещей, которые должен выполнять один пророк ..... вы когда-нибудь слышали о «единственной ответственной ответственности» **? Любой фрагмент кода должен делать ** одно и одно только ** - и делать это хорошо и без ошибок ..... –
Хорошо, спасибо за отзыв, не могли бы вы рассказать мне лучший способ написать название если у тебя есть ? – OnlyHope
BTW Этот SPROC На самом деле это действительно одно! Но он просто разделен на две части, но все же, конечно, если вы знаете другой способ, я бы очень признателен, если вы упомянули об этом .. Спасибо. – OnlyHope