powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Вывести фамилии преподавателей и названия факультетов на которых они читают лекции.
7 сообщений из 7, страница 1 из 1
Вывести фамилии преподавателей и названия факультетов на которых они читают лекции.
    #39994766
atorvik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
92.
93.
94.
95.
96.
97.
98.
99.
100.
101.
102.
103.
104.
105.
106.
107.
108.
109.
110.
111.
112.
113.
114.
115.
116.
117.
118.
119.
120.
121.
122.
--Запрос на создание базы данных Academy13082020dz4
use [master];
go

if db_id('Academy13082020dz4') is not null
begin
	drop database [Academy13082020dz4];
end
go

create database [Academy13082020dz4];
go

use [Academy13082020dz4];
go

create table [Curators]
(
	[Id] int not null identity(1, 1) primary key,
	[Name] nvarchar(max) not null check ([Name] <> N''),
	[Surname] nvarchar(max) not null check ([Surname] <> N'')
);
go

create table [Departments]
(
	[Id] int not null identity(1, 1) primary key,
	[Financing] money not null check ([Financing] >= 0.0) default 0.0,
	[Name] nvarchar(100) not null unique check ([Name] <> N''),
	[FacultyId] int not null
);
go

create table [Faculties]
(
	[Id] int not null identity(1, 1) primary key,
	[Financing] money not null check ([Financing] >= 0.0) default 0.0,
	[Name] nvarchar(100) not null unique check ([Name] <> N'')
);
go

create table [Groups]
(
	[Id] int not null identity(1, 1) primary key,
	[Name] nvarchar(100) not null unique check ([Name] <> N''),
	[Year] int not null check ([Year] between 1 and 5),
	[DepartmentId] int not null
);
go

create table [GroupsCurators]
(
	[Id] int not null identity(1, 1) primary key,
	[CuratorId] int not null,
	[GroupId] int not null
);
go

create table [GroupsLectures]
(
	[Id] int not null identity(1, 1) primary key,
	[GroupId] int not null,
	[LectureId] int not null
);
go

create table [Lectures]
(
	[Id] int not null identity(1, 1) primary key,
	[LectureRoom] nvarchar(max) not null check ([LectureRoom] <> N''),
	[SubjectId] int not null,
	[TeacherId] int not null
);
go

create table [Subjects]
(
	[Id] int not null identity(1, 1) primary key,
	[Name] nvarchar(100) not null unique check ([Name] <> N'')
);
go

create table [Teachers]
(
	[Id] int not null identity(1, 1) primary key,
	[Name] nvarchar(max) not null check ([Name] <> N''),
	[Salary] money not null check ([Salary] > 0.0),
	[Surname] nvarchar(max) not null check ([Surname] <> N'')
);
go

alter table [Departments]
add foreign key ([FacultyId]) references [Faculties]([Id]);
go

alter table [Groups]
add foreign key ([DepartmentId]) references [Departments]([Id]);
go

alter table [GroupsCurators]
add foreign key ([CuratorId]) references [Curators]([Id]);
go

alter table [GroupsCurators]
add foreign key ([GroupId]) references [Groups]([Id]);
go

alter table [GroupsLectures]
add foreign key ([GroupId]) references [Groups]([Id]);
go

alter table [GroupsLectures]
add foreign key ([LectureId]) references [Lectures]([Id]);
go

alter table [Lectures]
add foreign key ([SubjectId]) references [Subjects]([Id]);
go

alter table [Lectures]
add foreign key ([TeacherId]) references [Teachers]([Id]);
go



Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
--Запросы на заполнение базы данных Academy13082020dz4 по таблицам :
--Таблица Curators
USE Academy13082020dz4
INSERT INTO Curators
VALUES ('Евгения Наумовна', 'Черемисина'),
	   ('Владимир Петрович', 'Гердт'),
	   ('Владимир Николаевич', 'Добрынин'),
	   ('Наталья Германовна', 'Иноземцева'),
	   ('Елена Валерьевна', 'Земляная');
--Таблица Faculties
USE Academy13082020dz4
INSERT INTO Faculties
VALUES (25100.00, 'Факультет вычислительной математики и кибернетики'),
	   (35200.00, 'Химический факультет'),
	   (45300.00, 'Биологический факультет'),
	   (55400.00, 'Физический факультет'),
	   (65500.00, 'Факультет почвоведения');
--Таблица Departments
USE Academy13082020dz4
INSERT INTO Departments
VALUES (25000.00, 'Философии, культурологии и политологии', 1),
	   (35000.00, 'Истории', 2),
	   (45000.00, 'Международных отношений и дипломатии', 3),
	   (55000.00, 'Экономических и финансовых дисциплин', 4),
	   (65000.00, 'Менеджмента', 5);
--Таблица Groups
USE Academy13082020dz4
INSERT INTO Groups
VALUES ('P107', 1, 2),
	   ('P108', 2, 3),
	   ('P109', 3, 4),
	   ('P110', 4, 5),
	   ('P111', 5, 6);
--Таблица Subjects
USE Academy13082020dz4
INSERT INTO Subjects
VALUES ('Психология'),
	   ('Физика'),
	   ('Химия'),
	   ('Философия'),
	   ('Математика');
--Таблица Teachers
USE Academy13082020dz4
INSERT INTO Teachers
VALUES ('Антонина Викторовна', 15000.00, 'Коротеева'),
	   ('Олег Матвеевич', 16000.00, 'Кокун'),
	   ('Петро Михайлович', 17000.00, 'Павлик'),
	   ('Виталий Николаевич', 18000.00, 'Шмаргун'),
	   ('Ольга Николаевна', 19000.00, 'Кочубейник');
--Таблица Lectures
USE Academy13082020dz4
INSERT INTO Lectures
VALUES ('B103', 1, 1),
	   ('B104', 2, 2),
	   ('B105', 3, 3),
	   ('B106', 4, 4),
	   ('B107', 5, 5);
--Таблица GroupsCurators
USE Academy13082020dz4
INSERT INTO GroupsCurators
VALUES (1, 2),
	   (2, 3),
	   (3, 4),
	   (4, 5),
	   (5, 6);
--Таблица GroupsLectures
USE Academy13082020dz4
INSERT INTO GroupsLectures
VALUES (2, 1),
	   (3, 2),
	   (4, 3),
	   (5, 4),
	   (6, 5);


Вот к какому запросу пришел (не работает) :
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
--5. Вывести фамилии преподавателей и названия факультетов на которых они читают лекции. 
USE Academy13082020dz4
SELECT Teachers.Surname AS 'Teachers.Surname', Faculties.[Name] AS 'Faculties.Name'
FROM Teachers
INNER JOIN Lectures
ON Teachers.Id = Lectures.TeacherId
INNER JOIN GroupsLectures
ON GroupsLectures.GroupId = GroupsLectures.LectureId
INNER JOIN Groups
ON Groups.DepartmentId = Departments.Id
INNER JOIN Departments
ON Departments.FacultyId = Faculties.Id


Помогите, пожалуйста составить запрос. Не могу никак разобраться как его правильно составлять, а конкретнее, с этими связями между таблицами.
Если кому не лень буду благодарен за детально разжёванный материал или за работающий запрос.
ПС. Тема: Многотабличные базы данных.
...
Рейтинг: 0 / 0
Вывести фамилии преподавателей и названия факультетов на которых они читают лекции.
    #39994778
Владислав Колосов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
atorvik,

что именно не работает?
...
Рейтинг: 0 / 0
Вывести фамилии преподавателей и названия факультетов на которых они читают лекции.
    #39994780
londinium
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: sql
1.
2.
INNER JOIN GroupsLectures
ON GroupsLectures.GroupId = GroupsLectures.LectureId


странно это как-то
...
Рейтинг: 0 / 0
Вывести фамилии преподавателей и названия факультетов на которых они читают лекции.
    #39994790
atorvik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Владислав Колосов
atorvik,

что именно не работает?


Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
--5. Вывести фамилии преподавателей и названия факультетов на которых они читают лекции. 
USE Academy13082020dz4
SELECT Teachers.Surname AS 'Teachers.Surname', Faculties.[Name] AS 'Faculties.Name'
FROM Teachers
INNER JOIN Lectures
ON Teachers.Id = Lectures.TeacherId
INNER JOIN GroupsLectures
ON GroupsLectures.GroupId = GroupsLectures.LectureId
INNER JOIN Groups
ON Groups.DepartmentId = Departments.Id
INNER JOIN Departments
ON Departments.FacultyId = Faculties.Id


запрос этот не работает
что и не удивительно, так как он не правильно написан
а как правильно, не могу разобраться
выдает :
авторСообщение 4104, уровень 16, состояние 1, строка 10
Не удалось привязать составной идентификатор "Departments.Id".
Сообщение 4104, уровень 16, состояние 1, строка 12
Не удалось привязать составной идентификатор "Faculties.Id".
Сообщение 4104, уровень 16, состояние 1, строка 3
Не удалось привязать составной идентификатор "Faculties.Name".
подскажите, пожалуйста, как его исправить, чтобы выдавал данные по --> "Вывести фамилии преподавателей и названия факультетов на которых они читают лекции"
PS. Все запросы на создание базы в первом посте.
...
Рейтинг: 0 / 0
Вывести фамилии преподавателей и названия факультетов на которых они читают лекции.
    #39994802
londinium
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: sql
1.
2.
3.
4.
5.
6.
7.
SELECT T.NAME AS TeacherName,F.Name AS FacultyName
FROM dbo.Teachers AS T
JOIN dbo.Lectures AS L ON T.ID=L.TeacherID
JOIN dbo.GroupsLectures AS GL ON L.ID=GL.LectureID
JOIN dbo.Groups AS GR ON GL.GroupID=GR.ID
JOIN dbo.Departments AS D ON GR.DepartmentID=D.ID
JOIN dbo.Faculties AS F ON D.FacultyID=F.ID
...
Рейтинг: 0 / 0
Вывести фамилии преподавателей и названия факультетов на которых они читают лекции.
    #39994816
Владислав Колосов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
atorvik,

в заgросе нет таблицы Faculties, как минимум. И пересмотрите порядок объявления в объединении таблиц.
...
Рейтинг: 0 / 0
Вывести фамилии преподавателей и названия факультетов на которых они читают лекции.
    #39994876
atorvik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
всем большое спасибо за помощь
...
Рейтинг: 0 / 0
7 сообщений из 7, страница 1 из 1
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Вывести фамилии преподавателей и названия факультетов на которых они читают лекции.
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]