Форум программистов, компьютерный форум, киберфорум
Delphi: Базы данных
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 5.00/22: Рейтинг темы: голосов - 22, средняя оценка - 5.00
Кратк. - сест. тал.
86 / 50 / 4
Регистрация: 13.03.2008
Сообщений: 543
1

Вопрос про связь между двумя таблицами

20.07.2009, 13:24. Показов 4166. Ответов 21
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Привет всем. Помогите встать на путь истинный что-то я немного запутался. В общем проблема в следующем.
Есть база MS Access, в ней есть таблица Отделов и таблица Сотрудников.

Таблица "Отделы" состоит из:
1. Код отдела
2. Название отдела

Таблица "Сотрудники" состоит из:
1. Код сотрудника
2. Фио сотрудника
3. Код отдела
4. Отдел

Т.е. к примеру есть отдел "Бухгалтерия" с кодом 55001, в этом отделе работают сотрудники: Иванов, Петров, Сидоров.
Как сделать так, чтобы при изменении названия отдела в таблице "Отделы", это название само поменялось в таблице "Сотрудники" у всех сотрудников, которые относились к этому отделу. Я понимаю что нужно как-то связать эти таблицы по коду отдела, но как это сделать средствами Делфи не совсем разобрался.

В общем я немного запутался.
Заранее, большое спасибо!
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
20.07.2009, 13:24
Ответы с готовыми решениями:

Как создать связь между двумя таблицами
Я создала две таблицы в Database Desktop, но не могу их связать один-ко-многим. Кто может объяснить...

Связь между таблицами
Добрый день. Мне необходимо отобразить данные в DBgrid в Delphi 7, используя ADOQuery, SQL и...

Связь между таблицами
пытаюсь сделать связь такого плана: при нажатии в бдлукаплистбокс (привязному к основной таблице) ...

Связь между 3-мя таблицами
Добрый день.Очень сильно нужна помощь. Есть 3 таблицы.Все они связанные между собой(на скриншоте...

21
2923 / 844 / 324
Регистрация: 30.04.2009
Сообщений: 2,633
20.07.2009, 13:45 2
вообщето надо брать по id название, то есть в таблице сотрудники надо добавить id раздела, а потом по нему уже название будет
0
Кратк. - сест. тал.
86 / 50 / 4
Регистрация: 13.03.2008
Сообщений: 543
20.07.2009, 13:52  [ТС] 3
mamedovvms, ниче не понял??????
0
Комбайнёр
1606 / 704 / 77
Регистрация: 27.05.2008
Сообщений: 2,535
20.07.2009, 13:59 4
Vit@L, ЗАЧЕМ дублировать название отдела, почему бы не брать только с (Таблица "Отделы")???????????
0
Кратк. - сест. тал.
86 / 50 / 4
Регистрация: 13.03.2008
Сообщений: 543
20.07.2009, 14:20  [ТС] 5
IT-Skyline, Ну а как это сделать, можно подробнее?
0
Комбайнёр
1606 / 704 / 77
Регистрация: 27.05.2008
Сообщений: 2,535
20.07.2009, 14:43 6
SQL
1
2
SELECT Отделы.*, Сотрудники.* FROM Сотрудники, Отделы
WHERE Отделы.Код отдела = Сотрудники.Код отдела
0
Кратк. - сест. тал.
86 / 50 / 4
Регистрация: 13.03.2008
Сообщений: 543
20.07.2009, 14:46  [ТС] 7
IT-Skyline, ау-у-у-у, как это сделать, подскажи пожалуйста
0
2923 / 844 / 324
Регистрация: 30.04.2009
Сообщений: 2,633
20.07.2009, 14:49 8
так тебе же написали как сделать с помощью запроса
0
Комбайнёр
1606 / 704 / 77
Регистрация: 27.05.2008
Сообщений: 2,535
20.07.2009, 14:49 9
Я отписал вроде как?!
0
Кратк. - сест. тал.
86 / 50 / 4
Регистрация: 13.03.2008
Сообщений: 543
20.07.2009, 14:51  [ТС] 10
Да блин, не так все мне надо. В общем мне нужно вот что:

| Сотрудник | Отдел |
| Иванов И.И. | Бухгалтерия |

Т.е. мне нужно, чтобы это показывалось в DBGrid'e. Т.е. Отдел брался из справочника отделов, а Сотрудник из справочника сотрудников. Вот и запарился я уже с этими связями и справочниками. Как это сделать, не знаю
0
Комбайнёр
1606 / 704 / 77
Регистрация: 27.05.2008
Сообщений: 2,535
20.07.2009, 14:53 11
SQL
1
2
SELECT Сотрудники.Фио сотрудника, Отделы.Название отдела FROM Сотрудники, Отделы
WHERE Отделы.Код отдела = Сотрудники.Код отдела
1
2923 / 844 / 324
Регистрация: 30.04.2009
Сообщений: 2,633
20.07.2009, 14:53 12
ты таблицы то уже сделал или нет а то может мы просто о разном говорим
0
Кратк. - сест. тал.
86 / 50 / 4
Регистрация: 13.03.2008
Сообщений: 543
21.07.2009, 08:55  [ТС] 13
Да, таблицы уже есть.

Добавлено через 56 минут 16 секунд
IT-Skyline, Все, спасибо огромное. Получилось.

Добавлено через 2 часа 17 минут 11 секунд
Вот теперь встала другая проблема. В справочнике "Сотрудники" есть сотрудники, которые не принадлежат ни к одному отделу (ну к примеру разнорабочий), соответсвенно у него код отдела равен 0 и при выполнении запроса, который вы мне подсказали выше, он не включается в справочник сотрудников. Т.е. фактически этот сотрудник есть в базе, но в DBGride не отображается. Как сделать так, чтобы отображались все сотрудники, просто у тех сотрудников, которые не принадлежат ни к одному отделу, в поле "Отдел" было бы пустое значение. Заранее спасибо.
0
2923 / 844 / 324
Регистрация: 30.04.2009
Сообщений: 2,633
21.07.2009, 09:01 14
может для таких сотрудников создать отдельный отдел

Добавлено через 2 минуты 27 секунд
SQL
1
2
SELECT Сотрудники.Фио сотрудника, Отделы.Название отдела FROM Сотрудники, Отделы
WHERE (Отделы.Код отдела = Сотрудники.Код отдела)OR(Сотрудники.Код отдела=0)
а можно попробовать так
0
Кратк. - сест. тал.
86 / 50 / 4
Регистрация: 13.03.2008
Сообщений: 543
21.07.2009, 11:46  [ТС] 15
А вот еще такой вопрос. Как сделать выборку из трех таблиц. Т.е. та же самая ситуация как с отделами, только еще добавляется таблица должностей, из которой нужно так же выбрать должность для каждого сотрудника по коду.
Вот мой запрос:
Код
select * , OTDEL.OTDELY_NAME, DOLZNOSTY.DOLZNOST_NAME from SOTRUDNIKI, OTDELY, DOLZNOSTY where SOTRUDNIKI.ID_OTDEL = OTDELY.ID_OTDEL and SOTRUDNIKI.ID_DOLZNOST = DOLZNOSTY.ID_DOLZNOST
При выставлении свойства ADOQuery.Active = true выдает ошибку: "Параметр DOLZNOSTY.ID_DOLSNOST не имеет значения по умолчанию"
Какое еще значения по умолчанию, ни фига не понял. Как сделать чтобы этот запрос нормально выполнялся. Задолбался я уже с этими запросами.
0
2923 / 844 / 324
Регистрация: 30.04.2009
Сообщений: 2,633
21.07.2009, 11:49 16
ты скорее всего в запросе не правильно написал DOLZNOSTY.ID_DOLSNOST по этому он тебе и говорит что это не поле таблицы а параметр
0
Кратк. - сест. тал.
86 / 50 / 4
Регистрация: 13.03.2008
Сообщений: 543
21.07.2009, 12:36  [ТС] 17
Вроде бы все впорядке, после 10-го раза переписывания наконец-то написал правильно
0
2923 / 844 / 324
Регистрация: 30.04.2009
Сообщений: 2,633
21.07.2009, 12:37 18
ну что бывает особенно если вчерашний день весело проведен
0
Кратк. - сест. тал.
86 / 50 / 4
Регистрация: 13.03.2008
Сообщений: 543
21.07.2009, 13:43  [ТС] 19
Цитата Сообщение от mamedovvms Посмотреть сообщение
ну что бывает особенно если вчерашний день весело проведен
Да нет, я вообще не пью, даже по праздникам. Просто после отпуска работы много, запарился, вот отсюда и вся невнимательность.
0
2923 / 844 / 324
Регистрация: 30.04.2009
Сообщений: 2,633
21.07.2009, 13:48 20
да не я не имел ввиду ничего такого, просто не удачная шутка получилась
1
21.07.2009, 13:48
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
21.07.2009, 13:48
Помогаю со студенческими работами здесь

Связь между таблицами
Имеется две таблицы. OTDEL и Clients. Между ними связь один otdel ко многим clients. Есть база, три...

Связь между таблицами
Столкнулся с проблемой,немогу написать запрос,где в одном запросе объеденялись связи между 4 и...

Связь между таблицами
Здравствуйте. Я разрабатываю базу данных, У меня имеется две таблицы, связанные между собой. Связь...

Связь между таблицами
Здравствуйте, вообщем в приложении есть доставка топлива, определенное количество, нужно что бы при...

Связь между таблицами
добрый день всем. у меня вот вопрос 1 как связать две таблицы проста так я их связал но мне надо...

Связь между таблицами в БД
Добрый день, я делаю базу данных продажи билетов, и мне нужно связать 2 таблицы, честно скажу в...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru