Форум программистов, компьютерный форум, киберфорум
Microsoft Access
Войти
Регистрация
Восстановить пароль
 
 
Рейтинг 4.75/48: Рейтинг темы: голосов - 48, средняя оценка - 4.75
0 / 0 / 0
Регистрация: 28.02.2013
Сообщений: 10
1

Объединение 5 таблиц в одну + добавление дополнительных полей в общей

28.02.2013, 08:51. Показов 9071. Ответов 22
Метки нет (Все метки)

Опишу в общем. Задача заключается в создании одной общей таблицы, которая далее пойдет на рассылку электронных адресов.

Будет 3 групп получателей писем (по отраслям...): стоматологи (С), травматологи (Т), нейрохирурги (Н).

Каждый будет получать свое письмо.

Имеется 3 базы, соответственно, С, Т, Н одного типа (содержат поля: Адрес, Организация, Эл_адрес, Получатель, Должность). Поля Эл_адрес может повторяться в этих трех базах (например, в одной организации есть стоматологи и травматологи).

Итоговая таблица должна иметь поля:
Адрес, Организация, Эл_адрес, С (булево, заполняется если перенесена из таблицы С), Т (булево заполняется если перенесена из таблицы Т), Н (булево, заполняется если перенесена из таблицы Н), СДолжность (из таблицы С), СПолучатель (из таблицы С), ТДолжность (из таблицы Т), ТПолучатель (из таблицыТ), НДолжность (из таблицы Н), НПолучатель (из таблицы Н), Эл_адрес

Если один и тот же эл адрес есть и в таблице С и в таблице Т, то соответственно в общей таблице ставятся галки в полях С и Т, заполняются поля СДолжность, СПолучатель, ТДолжность, ТПолучатель; поля Адрес и Организация берутся из любой таблицы (не важно, хотя они могут и не совпадать дословно).

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

Помощь в написании контрольных, курсовых и дипломных работ здесь.

Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
28.02.2013, 08:51
Ответы с готовыми решениями:

Объединение двух таблиц в одну
2 таблицы с одинаковыми столбцами находится на аксес, я хочу объедит 2-ух таблицу, который видно...

Объединение 8-12 таблиц в одну объединенную
Здравствуйте! Создаю базу данных для лаборатории. У меня получается порядка 8-12 различных...

Объединение трех таблиц в одну
Есть три таблицы с данными по материалам-"остатки","приход" и "расход",в которую записываются...

Объединение 2ух таблиц в одну
В наличии 2 таблицы с одинаковыми столбцами, допустим Табл. 1 Фамилия Имя Отчество 1 ...

22
Эксперт MS Access
6745 / 4339 / 272
Регистрация: 12.08.2011
Сообщений: 12,759
28.02.2013, 10:01 2
Что именно вы собираетесь рассылать? В тексте не сказано ни про отчёт, ни про книгу Эксель ни про pdf. Что касается запроса или временной таблицы, то это по обстоятельствам, в большинстве случаев хватает запроса.
0
0 / 0 / 0
Регистрация: 28.02.2013
Сообщений: 6
28.02.2013, 10:07 3
дайте таблицы
0
0 / 0 / 0
Регистрация: 28.02.2013
Сообщений: 10
28.02.2013, 11:40  [ТС] 4
Цитата Сообщение от alvk Посмотреть сообщение
Что именно вы собираетесь рассылать? В тексте не сказано ни про отчёт, ни про книгу Эксель ни про pdf. Что касается запроса или временной таблицы, то это по обстоятельствам, в большинстве случаев хватает запроса.
Отправляться будет разная информация (в зависимости от квалификации врачей), которая с базы не берется. Просто таблица потом выгрузится в Excel - это конечный результат.
0
0 / 0 / 0
Регистрация: 28.02.2013
Сообщений: 10
28.02.2013, 12:18  [ТС] 5
Цитата Сообщение от Recover Посмотреть сообщение
дайте таблицы
Выкладываю таблицы, которые нужно объединить, и как должна выглядеть итоговая.
0
Вложения
Тип файла: zip Таблицы.zip (583.2 Кб, 63 просмотров)
Эксперт MS Access
6745 / 4339 / 272
Регистрация: 12.08.2011
Сообщений: 12,759
28.02.2013, 14:36 6
avdotia, ваши таблицы никак не связаны, сопоставить поля врядли выйдет. Наверное вы не всё выложили. Если же всё, то объединить их можно только с помощью union, типа такого:
T-SQL
1
2
3
4
5
6
7
8
SELECT "н" AS специализация, *
FROM Нейрохирурги
union all
SELECT "c" AS специализация, *
FROM стоматологи
union all
SELECT "т" AS специализация, *
FROM травматология
1
1300 / 506 / 63
Регистрация: 09.08.2012
Сообщений: 2,056
28.02.2013, 22:30 7
Только почему то когда так соединяешь, то свойства полей теряются и все поля становятся как текст в итоге, что не всегда хорошо при работе с цифрами. А если объединять и добавлять новые поля стандартным запросом тогда свойства остаются.
0
0 / 0 / 0
Регистрация: 28.02.2013
Сообщений: 10
01.03.2013, 06:13  [ТС] 8
Цитата Сообщение от alvk Посмотреть сообщение
avdotia, ваши таблицы никак не связаны, сопоставить поля врядли выйдет. Наверное вы не всё выложили. Если же всё, то объединить их можно только с помощью union, типа такого:
Смысл общей таблицы в том, чтобы не было дублей электронных адресов и одновременно не потерять контакты (строки Получатель и Должность) по каждой специализации.

Если имеются одинаковый Эл_адрес в таблице Стоматологи и Нейрохирурги, то мы должны их объединить в одну строку (поля Орг и Адрес не важно из какой таблицы пойдут), указав галочки в полях С и Н и раскидав поля Получателя и Должность в соответствующие колонки (СПолучатель, СДолжность - из таблицы Стоматологи, НПолучатель, НДолжность - из таблицы Нейрохирурги).

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

Добавлено через 6 минут
Цитата Сообщение от emenem97 Посмотреть сообщение
А если объединять и добавлять новые поля стандартным запросом
Приведите пример, пожалуйста.

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

Добавлено через 36 минут
Или можно использовать эту таблицу:

Цитата Сообщение от alvk Посмотреть сообщение
T-SQL
1
2
3
4
5
6
7
8
SELECT "н" AS специализация, *
FROM Нейрохирурги
union all
SELECT "c" AS специализация, *
FROM стоматологи
union all
SELECT "т" AS специализация, *
FROM травматология
... из нее данные программно раскидать по колонкам уже готовой общей таблицы
0
2840 / 772 / 41
Регистрация: 20.05.2012
Сообщений: 2,056
01.03.2013, 06:40 9
Стоп, стоп, стоп... Посмотрел ваш файл - если это реальная структура, то она неправильная: ненормализованная и избыточная. Должна быть одна таблица изначально - как раз та, которую вы хотите получить сейчас. В неё нужно просто добавить поле Отделение. И это избавит вас не только от этой проблемы, но и от многих в будущем. Объединяйте таблицы в одну
0
0 / 0 / 0
Регистрация: 28.02.2013
Сообщений: 10
01.03.2013, 06:46  [ТС] 10
Цитата Сообщение от Андрэич Посмотреть сообщение
Стоп, стоп, стоп... Посмотрел ваш файл - если это реальная структура, то она неправильная: ненормализованная и избыточная. Должна быть одна таблица изначально - как раз та, которую вы хотите получить сейчас. В неё нужно просто добавить поле Отделение. И это избавит вас не только от этой проблемы, но и от многих в будущем. Объединяйте таблицы в одну
В данный момент объединить их нереально... в каждой уже записей по 10000 ... разгребать все эти данные даже нет желания...

Добавлено через 1 минуту
Данные забивались в таблицу уже на протяжении 10 лет в этом виде
0
2840 / 772 / 41
Регистрация: 20.05.2012
Сообщений: 2,056
01.03.2013, 06:48 11
Цитата Сообщение от avdotia Посмотреть сообщение
В данный момент объединить их нереально...

Вы на вопрос ответьте сначала...
0
0 / 0 / 0
Регистрация: 28.02.2013
Сообщений: 10
01.03.2013, 06:54  [ТС] 12
Цитата Сообщение от Андрэич Посмотреть сообщение

Вы на вопрос ответьте сначала...
я имею ввиду вручную
0
2840 / 772 / 41
Регистрация: 20.05.2012
Сообщений: 2,056
01.03.2013, 07:25 13
Сорри, я вопрос-то и не задавал: в вашем файле - это реальная структура??? Имеется ввиду - поля в таблицах все такие же, как в файле?
0
0 / 0 / 0
Регистрация: 28.02.2013
Сообщений: 10
01.03.2013, 07:47  [ТС] 14
Цитата Сообщение от Андрэич Посмотреть сообщение
Сорри, я вопрос-то и не задавал: в вашем файле - это реальная структура??? Имеется ввиду - поля в таблицах все такие же, как в файле?
Есть еще, конечно данные, я все поля не стала писать... они не суть важно... Поля реальные.
0
Эксперт MS Access
6745 / 4339 / 272
Регистрация: 12.08.2011
Сообщений: 12,759
01.03.2013, 08:51 15
Цитата Сообщение от avdotia Посмотреть сообщение
В данный момент объединить их нереально... в каждой уже записей по 10000 ... разгребать все эти данные даже нет желания...
На самом деле рецепт вашего нереального я уже дал, осталось результат моего нереального запроса добавить в реальную таблицу, только поля придётся перечислить полностью.
Создаёте таблицу со всеми полями, что у вас есть, добавляете поле специализация и:
T-SQL
1
2
3
4
5
6
7
8
9
10
insert into БольшаяТаблица (специализация, поле1, поле2, ....)
select * from
(SELECT "н" AS специализация, поле1, поле2, ....
FROM Нейрохирурги
union all
SELECT "c" AS специализация, поле1, поле2, ....
FROM стоматологи
union all
SELECT "т" AS специализация, поле1, поле2, ....
FROM травматология) as NN
1
2840 / 772 / 41
Регистрация: 20.05.2012
Сообщений: 2,056
01.03.2013, 10:06 16
Select Into дальше также - сам создаст нужную таблицу
0
0 / 0 / 0
Регистрация: 28.02.2013
Сообщений: 10
01.03.2013, 12:23  [ТС] 17
Цитата Сообщение от alvk Посмотреть сообщение
Создаёте таблицу со всеми полями, что у вас есть, добавляете поле специализация и:
Получается также дублирование электронных адресов. Ничего не изменилось
0
Миниатюры
Объединение 5 таблиц в одну + добавление дополнительных полей в общей   Объединение 5 таблиц в одну + добавление дополнительных полей в общей  
0 / 0 / 0
Регистрация: 28.02.2013
Сообщений: 10
01.03.2013, 12:25  [ТС] 18
Цитата Сообщение от Андрэич Посмотреть сообщение
Select Into дальше также - сам создаст нужную таблицу
Можно подробнее. Не совсем ясно
0
2840 / 772 / 41
Регистрация: 20.05.2012
Сообщений: 2,056
01.03.2013, 13:05 19
Цитата Сообщение от avdotia Посмотреть сообщение
Можно подробнее
Можно: F1
0
3540 / 1114 / 94
Регистрация: 13.03.2011
Сообщений: 1,513
01.03.2013, 15:20 20
Цитата Сообщение от avdotia Посмотреть сообщение
Я вот, что думаю. Может тут сделать так: создать изначально эту общую таблицу. А далее на форме по нажатию кнопки ...
Или можно использовать эту таблицу...
В правильном направлении мыслите. В процедуру обработки события Click кнопки на форме поместите код
Кликните здесь для просмотра всего текста
Visual Basic
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
  Dim DB As DAO.Database, RSU As DAO.Recordset, RSG As DAO.Recordset
  Dim sq$, ea$
  On Error GoTo ler
  DoCmd.Hourglass True
  Set DB = CurrentDb
  DB.Execute "DELETE * FROM [Вот такую таблицу надо получить]"
  sq = "SELECT 'Н' AS sp, * FROM Нейрохирурги UNION ALL " & _
       "SELECT 'С', * FROM Стоматологи UNION ALL " & _
       "SELECT 'Т', * FROM Травматология ORDER BY Эл_адрес"
  Set RSU = DB.OpenRecordset(sq, dbOpenSnapshot)
  Set RSG = DB.OpenRecordset("Вот такую таблицу надо получить", dbOpenDynaset)
  Do Until RSU.EOF
    If ea <> RSU!Эл_адрес Then
      ea = RSU!Эл_адрес
      On Error Resume Next
      RSG.Update
      On Error GoTo ler
      RSG.AddNew
      RSG!Организация = RSU!Организации
      RSG!Адрес = RSU!Адрес
      RSG!ЭлАдрес = RSU!Эл_адрес
    End If
    RSG(RSU!sp) = True
    RSG(RSU!sp & "Получатель") = RSU!Получатель
    RSG(RSU!sp & "Должность") = RSU!Должность
    RSU.MoveNext
  Loop
lex:
  On Error Resume Next
  RSG.Update
  RSU.Close: Set RSU = Nothing
  RSG.Close: Set RSG = Nothing
  Set DB = Nothing
  DoCmd.Hourglass False
  Exit Sub
ler:
  DoCmd.Hourglass False
  MsgBox Err.Description
  Resume lex

Предположил,что поле Эл_адрес исходных таблиц не пусто (не Null и не пустая строка), иначе нужно в SQL-тексте запроса (переменная sq) предусмотреть отсечение таких записей.
1
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
01.03.2013, 15:20

Объединение нескольких разных таблиц в одну
Добрый день! Помогите пожалуйста с таблицей. Имеется несколько таблиц с разным кол-вом столбцов....

Объединение двух таблиц с данными в одну
Добрый день! Имеется две таблицы с данными в EXCEL, необходимо дополнить данными из одной в...

Объединение данных из нескольких таблиц в одну
Здравствуйте уважаемые участники форума. Прошу помочь советом, как решить такую задачку. ...

Объединение двух таблиц в одну подчинённую форму
Помогите пожалуйста. Суть проблемы в следующем. Нужно создать подчинённую форму из двух таблиц...


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.