• 15 апреля стартует «Курс «SQL-injection Master» ©» от команды The Codeby

    За 3 месяца вы пройдете путь от начальных навыков работы с SQL-запросами к базам данных до продвинутых техник. Научитесь находить уязвимости связанные с базами данных, и внедрять произвольный SQL-код в уязвимые приложения.

    На последнюю неделю приходится экзамен, где нужно будет показать свои навыки, взломав ряд уязвимых учебных сайтов, и добыть флаги. Успешно сдавшие экзамен получат сертификат.

    Запись на курс до 25 апреля. Получить промодоступ ...

Как объеденить 10 таблиц БД Access в одну?

  • Автор темы Aston
  • Дата начала
A

Aston

Доброго времени суток! :)
Есть база данных в Access, в ней 10 таблиц с одинаковой структурой: Модель, Описание, Характеристики, Объем
К каждой таблице соответствующий запрос
Небходимо эти таблицы (либо запросы) обеденить в одну...что-то типа сводного запроса.

Благодарю за помощь! :facepalm:
 
K

KIA1990

Код:
SELCT table1.a, table2.a
FROM table1, table2
WHERE table1.a > 5 AND table2.a > 5
Можно например вот так одним запросом выбрать элементы из нескольких таблиц
 
E

etc

Какие таблицы, какие запросы... ничего не понятно.
 
A

Aston

Какие таблицы, какие запросы... ничего не понятно.

;) Что именно не понятно?
Есть 10 таблиц. С полями Модель(Текстовый), Описание(МЕМО), Характеристики(Текстовый), Объем(Числовой)
Где-то по 20-30 записей в каждой. Как сделать так чтобы все записи 10-и таблиц были в одной с помощью запроса?
 
E

etc

И все 10 одинаковые? а зачем их столько?
 
E

etc

Это понятно что разные, даже 2 записи в 1 таблице разные всегда (почти), иначе на кой их создавать(?), однако на каждую запись не делают по таблице, не правдали?
Вот мне и не понятно, зачем столько таблиц, закинте все в одну и ненадо будет огороды городить.
А так запрос вида как у ???? должен помочь. Вы покажите чего у вас там не получилось.
 
A

Aston

Это понятно что разные, даже 2 записи в 1 таблице разные всегда (почти), иначе на кой их создавать(?), однако на каждую запись не делают по таблице, не правдали?
Вот мне и не понятно, зачем столько таблиц, закинте все в одну и ненадо будет огороды городить.
А так запрос вида как у ???? должен помочь. Вы покажите чего у вас там не получилось.

Таблицы разные, потому что в них перечислена однотипная информация из разных источников данных
Как сделать сводную таблицу с раскрывающимися списками, или сплошным списком?
Кто знает как подскажите плз. кто знает. Вопрос еще актуален :what?:
 
U

User1C

:O_0: Что именно не понятно?
Есть 10 таблиц. С полями Модель(Текстовый), Описание(МЕМО), Характеристики(Текстовый), Объем(Числовой)
Где-то по 20-30 записей в каждой. Как сделать так чтобы все записи 10-и таблиц были в одной с помощью запроса?


Код:
db.Execute "delete * from Какая_то_созданная_таблица"

Set rst = db.OpenRecordset("Какая_то_созданная_таблица")

For i = 1 To 10

Set rstw = db.OpenRecordset("select * from Tabl + i)

While Not rstw.EOF

rst.AddNew

rst!.Модель = rstw!Модель
rst!Описание = rstw!Описание
rst!Характеристики = rstw!Характеристики
rst!Объем = rstw!Объем
rst.Update

rstw.MoveNext
Wend

Next i
:what?:



Если не получается по простому через Union (хотя если у тебя все поля совпадают, то должно работать), то как вариант!
 
A

Aleksey

Выдает сообщение Синтаксическая ошибка в запросе. Неполное предложение запроса.


Приблизительно минуты три "ковыряния" подтвердили догадку о том, что UNION должен работать. Вот текст запроса для Access, который создает таблицу Tab3 из двух таблиц Tab1 и Tab2:
SELECT * INTO Tab3 FROM (
SELECT * FROM Tab1
UNION ALL
SELECT * FROM Tab2);
 
E

etc

Автор всеравно не расколется, и не пытайтесь, у него и брат партизан.

Добавлено:
Таблицы разные, потому что в них перечислена однотипная информация из разных источников данных
Ну я бы наверное застрелился, если бы это было не так.
 
A

Aston

SELECT * INTO Svodnaja FROM (
SELECT * FROM Table1
UNION ALL
SELECT * FROM Table2);

Благодарю :lovecodeby: Для объединения 2-х таблиц реализовать даный алгоритм тоже получилось. Правда объеденить все 10 пока не получается :KillMe:
Либо я где-то туплю. либо UNION ALL обеспечивает тип запроса "Добавление" и он годен только только для 2-х таблиц :what?: Поправте, если я заблуждаюсь

Добавлено:
Код:
db.Execute "delete * from Какая_то_созданная_таблица"

Set rst = db.OpenRecordset("Какая_то_созданная_таблица")

For i = 1 To 10

Set rstw = db.OpenRecordset("select * from Tabl + i)

While Not rstw.EOF

rst.AddNew

rst!.Модель = rstw!Модель
rst!Описание = rstw!Описание
rst!Характеристики = rstw!Характеристики
rst!Объем = rstw!Объем
rst.Update

rstw.MoveNext
Wend

Next i
<_<


Если не получается по простому через Union (хотя если у тебя все поля совпадают, то должно работать), то как вариант!

Спасибо за идею :rolleyes: Но хотелось бы реализовать как-то проще=) С UNION ALL мне больше нравится. Почти уже получилось=)
 
U

User1C

Попробуй без UNION ALL

SELECT Модель, Описание,Характеристики,Объем
FROM Tabl1;

UNION SELECT Модель, Описание,Характеристики,Объем
FROM Tabl2;

UNION SELECT Модель, Описание,Характеристики,Объем
FROM Tabl...+n;

и т.д.

Должно 100% работать, при условии что все поля совпадают по имени

Объедини попробуй сначала 2,потом 3, если на какой то не получается, возникает ошибка, то смотри структуру таблицы. Возможно где-то поля не совпадают.
 
A

Aleksey

Ну, э.... синтаксис для объединения десяти таблиц отличается от объединения двух только количеством селектов:
Код:
SELECT * INTO Tab_Res FROM (
SELECT * FROM Tab1
UNION ALL
SELECT * FROM Tab2
UNION ALL
SELECT * FROM Tab3
UNION ALL
SELECT * FROM Tab4
UNION ALL
SELECT * FROM Tab5
UNION ALL
SELECT * FROM Tab6
UNION ALL
SELECT * FROM Tab7
UNION ALL
SELECT * FROM Tab8
UNION ALL
SELECT * FROM Tab9
UNION ALL
SELECT * FROM Tab10);
 
A

Aston

Ну, э.... синтаксис для объединения десяти таблиц отличается от объединения двух только количеством селектов:
Код:
SELECT * INTO Tab_Res FROM (
SELECT * FROM Tab1
UNION ALL
SELECT * FROM Tab2
UNION ALL
SELECT * FROM Tab3...);

Все получилось!!! :YES: Доволен как слон))
Правда вконце набраного запроса появилась интересная крякозябра, которую я не набирал:
... Интересно что программа хотела этим сказать

Вот собственно сам код самого запроса.
SELECT * INTO Svodnaja
FROM [SELECT * FROM Table1 UNION ALL SELECT * FROM Table2 UNION ALL SELECT * FROM Table3 UNION ALL SELECT * FROM Table4 UNION ALL SELECT * FROM Table5 UNION ALL SELECT * FROM Table6 UNION ALL SELECT * FROM Table7 UNION ALL SELECT * FROM Table8 UNION ALL SELECT * FROM Table9 UNION ALL SELECT * FROM Table10]. AS [%$##@_Alias];

Всем спасибо за оказанную помощь! :rolleyes:
 
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!