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

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

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

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

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

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

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

В общем я немного запутался.
Заранее, большое спасибо!
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
20.07.2009, 13:24
Ответы с готовыми решениями:

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

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

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

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

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

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

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

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

Добавлено через 2 минуты 27 секунд
SQL
1
2
SELECT Сотрудники.Фио сотрудника, Отделы.Название отдела FROM Сотрудники, Отделы
WHERE (Отделы.Код отдела = Сотрудники.Код отдела)OR(Сотрудники.Код отдела=0)
а можно попробовать так
0
Кратк. - сест. тал.
 Аватар для Vit@L
87 / 51 / 4
Регистрация: 13.03.2008
Сообщений: 543
21.07.2009, 11:46  [ТС]
А вот еще такой вопрос. Как сделать выборку из трех таблиц. Т.е. та же самая ситуация как с отделами, только еще добавляется таблица должностей, из которой нужно так же выбрать должность для каждого сотрудника по коду.
Вот мой запрос:
Code
1
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
ты скорее всего в запросе не правильно написал DOLZNOSTY.ID_DOLSNOST по этому он тебе и говорит что это не поле таблицы а параметр
0
Кратк. - сест. тал.
 Аватар для Vit@L
87 / 51 / 4
Регистрация: 13.03.2008
Сообщений: 543
21.07.2009, 12:36  [ТС]
Вроде бы все впорядке, после 10-го раза переписывания наконец-то написал правильно
0
2923 / 844 / 324
Регистрация: 30.04.2009
Сообщений: 2,633
21.07.2009, 12:37
ну что бывает особенно если вчерашний день весело проведен
0
Кратк. - сест. тал.
 Аватар для Vit@L
87 / 51 / 4
Регистрация: 13.03.2008
Сообщений: 543
21.07.2009, 13:43  [ТС]
Цитата Сообщение от mamedovvms Посмотреть сообщение
ну что бывает особенно если вчерашний день весело проведен
Да нет, я вообще не пью, даже по праздникам. Просто после отпуска работы много, запарился, вот отсюда и вся невнимательность.
0
2923 / 844 / 324
Регистрация: 30.04.2009
Сообщений: 2,633
21.07.2009, 13:48
да не я не имел ввиду ничего такого, просто не удачная шутка получилась
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
21.07.2009, 13:48
Помогаю со студенческими работами здесь

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

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

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

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

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


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма). На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ * Дана цепь постоянного тока с R, L, C, k(ключ), U, E, J. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа, решает её и находит: токи, напряжения и их 1 и 2 производные при t = 0;. . .
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым. Но восстановить их можно так. Для этого понадобится консольная утилита. . .
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
Модель микоризы: классовый агентный подход 3
anaschu 06.01.2026
aa0a7f55b50dd51c5ec569d2d10c54f6/ O1rJuneU_ls https:/ / vkvideo. ru/ video-115721503_456239114
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru