Обычно вы не организовываете свою базу данных SQL таким образом. То, что вы описываете, - это два объекта (встреча & Участник), которые имеют отношения «один ко многим». то есть собрание может иметь ноль или более участников. Чтобы смоделировать это в SQL, вы должны использовать три таблицы: таблицу собраний, таблицу участников и таблицу MeetingParticipant. Таблица MeetingParticipant содержит ссылки между встречами & участников.Таким образом, вы могли бы иметь что-то вроде этого (извините любые SQL синтаксических ошибок)
create table Meeting
(
MeetingID int,
Name varchar(50),
Location varchar(100)
)
create table Participant
(
ParticipantID int,
FirstName varchar(50),
LastName varchar(50)
)
create table MeetingParticipant
(
MeetingID int,
ParticipantID int
)
Для заполнения этих таблиц вы бы сначала создать несколько участников:
insert into Participant(ParticipantID, FirstName, LastName) values(1, 'Tom', 'Jones')
insert into Participant(ParticipantID, FirstName, LastName) values(2, 'Dick', 'Smith')
insert into Participant(ParticipantID, FirstName, LastName) values(3, 'Harry', 'Windsor')
и создать собрание или два вставки в собрании (MeetingID, Name, Location) (10, 'SQL Training', 'Room 1') Вставить в значения Meeting (MeetingID, Name, Location) (11, 'SQL Training', 'Room 2')
и теперь добавьте некоторых участников на собрания
insert into MeetingParticipant(MeetingID, ParticipantID) values(10, 1)
insert into MeetingParticipant(MeetingID, ParticipantID) values(10, 2)
insert into MeetingParticipant(MeetingID, ParticipantID) values(11, 2)
insert into MeetingParticipant(MeetingID, ParticipantID) values(11, 3)
Теперь вы можете выбрать все встречи и участников для каждой встречи с
select m.MeetingID, p.ParticipantID, m.Location, p.FirstName, p.LastName
from Meeting m
join MeetingParticipant mp on m.MeetingID=mp.MeetingID
join Participant p on mp.ParticipantID=p.ParticipantID
выше следует производить
MeetingID ParticipantID Location FirstName LastName
10 1 Room 1 Tom Jones
10 2 Room 1 Dick Smith
11 2 Room 2 Dick Smith
11 3 Room 2 Harry Windsor
Если вы хотите узнать все встречи, которые " Дик Смит ", вы напишете что-то вроде этого
select m.MeetingID, m.Location
from Meeting m join MeetingParticipant mp on m.MeetingID=mp.ParticipantID
where
mp.ParticipantID=2
и получить
MeetingID Location
10 Room 1
11 Room 2
Я опустил важные вещи, как индексы, первичные ключи и отсутствующие атрибуты, такие как встречи даты, но понятнее без всякой слизи.
Домашнее задание? Это ужасный дизайн стола. Создайте таблицу участников, таблицу совещаний и третью таблицу, чтобы присоединиться к двум. –
@Frank - Я видел этот материал раньше, и это было не домашнее задание ... Дайте человеку перерыв ... – RSolberg