Форум программистов, компьютерный форум, киберфорум
Microsoft Access
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.72/25: Рейтинг темы: голосов - 25, средняя оценка - 4.72
0 / 0 / 0
Регистрация: 13.07.2015
Сообщений: 6
1

Объединение нескольких разных таблиц в одну

05.09.2017, 16:57. Показов 4701. Ответов 13
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Добрый день!
Помогите пожалуйста с таблицей.
Имеется несколько таблиц с разным кол-вом столбцов. Все они связаны с одной таблицей.
Необходимо создать одну общую таблицу, которая бы включала в себя все имеющиеся таблицы, но без повторов одних и тех же данных в столбцах.
Объединение таблиц с помощью LEFT JOIN приводит к такому виду:
КодНаименованиеПоставщикАдресПараметрЕдЗначенияХарактеристикиКол-во
1Товар1  Параметр1едизм1Значение1Характеристика1Кол-во1
1Товар1  Параметр1едизм1Значение2Характеристика2 
1Товар1  Параметр2едизм2Значение1Характеристика1Кол-во1
1Товар1  Параметр2едизм2Значение2Характеристика2 
2Товар2Поставщик1Адрес1Параметр3едизм3Значение3Характеристика3Кол-во2
2Товар2Поставщик2Адрес2Параметр3едизм3Значение3Характеристика3Кол-во2
2Товар2Поставщик3 Параметр3едизм3Значение3Характеристика3Кол-во2
3Товар3  Параметр4едизм4Значение4 Кол-во3
3Товар3  Параметр5едизм5Значение4 Кол-во3
4Товар4  Параметр6едизм6Значение5Характеристика4Кол-во4
4Товар4  Параметр6едизм6Значение6Характеристика5Кол-во5
5Товар5 Адрес3Параметр7едизм7   
5Товар5Поставщик4 Параметр7едизм7   
5Товар5Поставщик5 Параметр7едизм7   
5Товар5Поставщик6 Параметр7едизм7   
5Товар5 Адрес4Параметр7едизм7   
Хотелось бы привести таблицы к такому виду:
КодНаименованиеПоставщикАдресПараметрЕдЗначенияХарактеристикиКол-во
1Товар1  Параметр1едизм1Значение1Характеристика1Кол-во1
1   Параметр2едизм2Значение2Характеристика2 
2Товар2Поставщик1Адрес1Параметр3едизм3Значение3Характеристика3Кол-во2
2 Поставщик2Адрес2     
2 Поставщик3      
3Товар3  Параметр4едизм4Значение4 Кол-во3
3   Параметр5едизм5   
и т.д.
Во вложении база данных
Вложения
Тип файла: 7z Database31.7z (59 байт, 12 просмотров)
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
05.09.2017, 16:57
Ответы с готовыми решениями:

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

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

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

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

13
393 / 137 / 37
Регистрация: 16.03.2013
Сообщений: 1,491
06.09.2017, 06:49 2
Архив пустой скачивается
0
0 / 0 / 0
Регистрация: 13.07.2015
Сообщений: 6
06.09.2017, 09:59  [ТС] 3
Вложил базу еще раз
Вложения
Тип файла: zip Database31.zip (21.0 Кб, 15 просмотров)
0
Эксперт MS Access
7442 / 4576 / 301
Регистрация: 12.08.2011
Сообщений: 14,241
11.09.2017, 08:01 4
У вас нет повторов, нехорошо обманывать.
0
0 / 0 / 0
Регистрация: 13.07.2015
Сообщений: 6
11.09.2017, 10:58  [ТС] 5
И где я обманываю?
В столбце 2 - Товар1 повторяется аж 4 раза. В столбце "Параметр" повторяется строчка Параметр1 - два раза.
0
393 / 137 / 37
Регистрация: 16.03.2013
Сообщений: 1,491
11.09.2017, 12:20 6
Применить группировку в запросе не пробовали?

Добавлено через 1 минуту
SQL
1
2
3
SELECT Товар.Код, Товар.Наименование, Параметр.Параметр, Параметр.Ед, Значения.Значения, Значения.Характеристики, Значения.[Кол-во], Поставщик.Поставщик, Поставщик.Адрес
FROM ((Товар LEFT JOIN Значения ON Товар.Код = Значения.№Товара) LEFT JOIN Параметр ON Товар.Код = Параметр.№Товара) LEFT JOIN Поставщик ON Товар.Код = Поставщик.№Товара
GROUP BY Товар.Код, Товар.Наименование, Параметр.Параметр, Параметр.Ед, Значения.Значения, Значения.Характеристики, Значения.[Кол-во], Поставщик.Поставщик, Поставщик.Адрес;
Добавлено через 58 секунд
Вроде то что надо показывает, если не ошибаюсь...
0
0 / 0 / 0
Регистрация: 13.07.2015
Сообщений: 6
11.09.2017, 15:24  [ТС] 7
Пробовал - показывает совершенно то же самое. Создал запрос с группировкой и сравнил переключением с первого запроса на этот. Различий нет
0
Модератор
Эксперт MS Access
6231 / 2909 / 707
Регистрация: 12.06.2016
Сообщений: 7,839
11.09.2017, 17:50 8
Вот вариант запроса.
Но предупреждаю: это по сути подгонка под ответ.
Почему?
Из-за "подтасовки" в этом запросе связи таблицы Значения с другими таблицами.
Ведь связь только по коду товара как раз и дает приведенный Вами результат - "с повторами".
SQL
1
2
3
4
5
6
SELECT Q.*, Значения, Характеристики, [Кол-во]
FROM (SELECT Товар.*, Поставщик, Адрес, Параметр, Ед
FROM (Товар LEFT JOIN Поставщик ON Товар.Код = Поставщик.№Товара) LEFT JOIN 
      Параметр ON Товар.Код = Параметр.№Товара) AS Q LEFT JOIN 
      Значения ON RIGHT(Q.Параметр,1) = RIGHT(Значения.Значения,1) AND Q.Код = Значения.№Товара
ORDER BY Наименование, Поставщик, Параметр;
0
0 / 0 / 0
Регистрация: 13.07.2015
Сообщений: 6
11.09.2017, 17:57  [ТС] 9
Не совсем то, потому что у нас пропадают некоторые данные из таблицы.
Например у Товар4 пропадают Значение5, Характеристика4, Кол-во4.
Хотя первые три Товара - вроде как то что нужно
0
Модератор
Эксперт MS Access
6231 / 2909 / 707
Регистрация: 12.06.2016
Сообщений: 7,839
11.09.2017, 18:05 10
Вы так и не поняли, что следует задать однозначное правило привязки табл. Значения?
Посмотрите, отчего первые три товара "вроде как то что нужно", а у Товар4 пропадают позиции.
Проанализируйте табл. Параметры и табл. Значения.
И с этим увяжите увиденное в табличках: RIGHT(Q.Параметр,1) = RIGHT(Значения.Значения,1).
0
393 / 137 / 37
Регистрация: 16.03.2013
Сообщений: 1,491
12.09.2017, 05:42 11
Цитата Сообщение от ЕЖ В НИРВАНЕ Посмотреть сообщение
Пробовал - показывает совершенно то же самое.
Да нет, не то же самое, если и есть повторы на первый взгляд, то в каком-то из столбцов все равно есть отличие, если внимательнее посмотреть. Абсолютно одинаковых строк нет.
0
Эксперт MS Access
7442 / 4576 / 301
Регистрация: 12.08.2011
Сообщений: 14,241
18.09.2017, 16:30 12
Цитата Сообщение от ЕЖ В НИРВАНЕ Посмотреть сообщение
В столбце 2 - Товар1 повторяется аж 4 раза. В столбце "Параметр" повторяется строчка Параметр1 - два раза.
повтор - это две идентичные записи и более, у вас таких нет.
0
Эксперт MS Access
26815 / 14494 / 3192
Регистрация: 28.04.2012
Сообщений: 15,782
25.09.2017, 11:01 13
Лучший ответ Сообщение было отмечено ЕЖ В НИРВАНЕ как решение

Решение

Как-то забыл про этот топик. Случайно вспомнил . Выкладываю решение с дополнительной таблицей Temp, заполняющейся в коде процедуры addTempTable из Module1. Нажимайте на кнопку на стартовой форме, в подформе, основанной на таблице Temp, будут данные, переформатированные по ТЗ
Вложения
Тип файла: rar ЕЖ В НИРВАНЕ.rar (33.3 Кб, 36 просмотров)
2
0 / 0 / 0
Регистрация: 13.07.2015
Сообщений: 6
25.09.2017, 11:11  [ТС] 14
Идеально!
Спасибо!
0
25.09.2017, 11:11
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
25.09.2017, 11:11
Помогаю со студенческими работами здесь

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

Объединение нескольких строк в одну
Добрый день, есть БД нужно вывести N строк ( число строк введенное на форме), с объединением строк...

Объединение нескольких строк в одну
Очень нужна помощь!!! Есть база владельцев оружия - содержит примерно 85 различных таблиц, штук...

Объединение нескольких записей в одну
В одной таблице есть работники (Иванов, Петров, Сидоров). В другой подчинённой таблице есть...

Объединение нескольких таблиц
Доброго времени суток, товарищи. Помогите разобраться с БД. Необходимо создать объединение...

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


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

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