Думаю, вам нужно что-то подобное.
Для первого запроса вам необходимо присоединиться к таблицам «Курс» и «Раздел» по номеру курса, который является ключом. Теперь, я не думаю, что вам нужно делать строковые манипуляции в dayTime, так как все, что вам нужно, это количество записей, которые будут храниться в агрегации.
Что касается второго запроса, вам нужно будет объединить таблицы «Курс» и «Учитель», опять же, конечно.
В обоих запросах должны использоваться предложения Group By и Have, так как вам требуется агрегация в обоих случаях, что обусловлено количеством учителей/еженедельных собраний.
Надеюсь, это поможет.
drop table #Teacher
SELECT *
into #Teacher
FROM
(
select 1 as CourseN, 1 as Quarter, 'Dan' as TeacherName
union
select 1 as CourseN, 1 as Quarter, 'Alex' as TeacherName
union
select 2 as CourseN, 1 as Quarter, 'Rob' as TeacherName
union
select 3 as CourseN, 2 as Quarter, 'Jim' as TeacherName
union
select 4 as CourseN, 3 as Quarter, 'Bob' as TeacherName
union
select 4 as CourseN, 3 as Quarter, 'Alice' as TeacherName
) a
drop table #Course
SELECT *
into #Course
FROM
(
select 1 as CourseN, 'English' as CourseName, 1 as Nunit
UNION
select 2 as CourseN, 'Algebra' as CourseName, 1 as Nunit
UNION
select 3 as CourseN, 'Math' as CourseName, 1 as Nunit
UNION
select 4 as CourseN, 'Science' as CourseName, 1 as Nunit
) a
drop table #Section
SELECT *
into #Section
FROM
(
select 1 as CourseN, 1 as Quarter, 'M2:00AM' as DayTime , 1 as RoomN
UNION
select 1 as CourseN, 1 as Quarter, 'W2:00AM' as DayTime , 1 as RoomN
UNION
select 2 as CourseN, 1 as Quarter, 'W2:00AM' as DayTime , 1 as RoomN
UNION
select 3 as CourseN, 2 as Quarter, 'W2:00AM' as DayTime , 1 as RoomN
UNION
select 3 as CourseN, 2 as Quarter, 'T2:00AM' as DayTime , 1 as RoomN
UNION
select 4 as CourseN, 3 as Quarter, 'T2:00AM' as DayTime , 1 as RoomN
) a
--List the CourseN, CourseName, and Quarter which meets or met at least two times a week.
select a.CourseN , a.CourseName , b.Quarter --, COUNT(b.CourseN) NumOfWeeklyMeetings
from #Course a
inner join #Section b
on a.CourseN = b.CourseN
Where 1=1
GROUP BY a.CourseN , a.CourseName , b.Quarter
having COUNT(b.CourseN) > 1
--List the CourseN and Quarter of every course taught by two
--different instructors in the same quarter ordered by the CourseN in descending order.
SELECT a.CourseN , b.Quarter --, count(b.TeacherName) NumOfTeachers
FROM #Course a
inner join #Teacher b
on a.CourseN = b.CourseN
WHERE 1=1
group by a.CourseN , b.Quarter
having count(b.TeacherName) > 1
Для второго, вам необходимо присоединиться к таблице курсов с вашим столом инструктора (я предполагаю, что у вас есть), получить количество преподавателей для каждого курса, а также использовать GROUP BY и HAVING найти курсы, где количество преподавателей составляет два. – BobRodes
@BobRodes: Разве я не буду делать, где счет курсаN равен 2, так как он просит двух разных преподавателей, преподающих один и тот же курс? И даже если я сделаю это, я не могу вставить эту информацию в таблицу моих учителей. –
Нет, вы будете делать, где учитель считается 2, так как вы говорите о двух преподавателях, преподающих один курс. У вас, вероятно, есть еще одна таблица, которая связывает учителей с курсами, и вам нужно будет использовать их. – BobRodes