1 (изменено: Евген, 2011-04-07 06:44:03)

Тема: SQL: Объединение данных из 2-х таблиц

Коллеги, приветствую !
Есть вопрос следующего содержания:
Имеется 2 базы (primary и secondary)
в primary содержится инфа по инвентаризованным компьютерам следующего вида:

Дата инвентаризации| Имя АРМ| Процессор| S/N BIOS| Операционная система| IP адрес| MAC Адрес|

В secondary к каждому АРМ'у содержатся записи по имеющимся учётным записям, где каждому АРМ'у из primary соответсвует несколько записей из secondary, т.к. на каждом АРМ'е имеется несколько учётных записей пользователей, пример таблицы

Дата инвентаризации| Имя АРМ| login| isadmin| disabled|

Можно ли сделать такой запрос, чтобы данные из таблицы secondary по совпадению общих полей (Дата инвентаризации | Имя АРМ) добавлялись в результирующую строчку к данным из primary, например так

Дата инвентаризации| Имя АРМ| Процессор| S/N BIOS| Операционная система| IP адрес| MAC Адрес| login1| isadmin1| disabled1| login2| isadmin2| disabled2| login3| isadmin3| disabled3|

Смысл в том, что мне надо собрать такую матрицу по ~ 3000 компов...   :-(

Времени не хватает... :-(

2

Re: SQL: Объединение данных из 2-х таблиц

Давно я этим занимался... Если это MS SQL, однозначно можно. Даже если это две БД на разных серверах, можно подключить один к другому как "Linked Server" и получить данные в одном запросе, одним JOIN.

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

3 (изменено: Евген, 2011-04-07 14:40:33)

Re: SQL: Объединение данных из 2-х таблиц

Это база MS Access, но думаю всё равно прокатит...   по крайней мере предлагаю попробовать...
А то у меня сейчас получается, что я сначала получаю моментально рекордсет по таблице primary, и потом его полностью перебирая делаю выборку по каждому АРМ'у в secondary и собираю данные в Excel
Сервер лежит на лопатках 8 минут

Времени не хватает... :-(

4

Re: SQL: Объединение данных из 2-х таблиц

Как вариант — предварительно автоматизировать экспорт-импорт нужной таблицы из одной БД в другую.

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

5

Re: SQL: Объединение данных из 2-х таблиц

т.е. если я правильно понял, то собирать в третьей таблице, где заранее создано максимальное количество столбцов под учётные записи ?
или как устроить экспорт-импорт... ?
дело в том, что в primary все данные по одному АРМу за одну дату содержаться в одну строчку, а в secondary одному АРМу за одну дату соответствует несколько строк... т.е. тогда расплодить количество строк в соответствии с количеством учёток ?

Времени не хватает... :-(

6

Re: SQL: Объединение данных из 2-х таблиц

OFF: Евген, а зачем вообще нужен такой странный итоговый набор с транспонируемыми данными? Какова цель?

7 (изменено: Евген, 2011-04-07 17:11:23)

Re: SQL: Объединение данных из 2-х таблиц

Дык какие попросило руководство - такие и делаю... им это нужно для анализа, именно такой вид попросили они сами...  я предупреждал что будет не удобно (хотя ни я сам, ни они не предложили ни чего более)...
Есть вариант как такие данные сформировать более удобно ? - с удовольствием выслушаю предложения....

Времени не хватает... :-(

8

Re: SQL: Объединение данных из 2-х таблиц

Не знаю, чем им не понравилось такое?
http://img161.imagevenue.com/loc71/th_83366_MSAccess_122_71lo.jpg
На мой взгляд, гораздо удобнее смотреть в раскрывающуюся таблицу.

9 (изменено: Евген, 2011-04-07 19:09:20)

Re: SQL: Объединение данных из 2-х таблиц

Сейчас скриншот отправил руководителю - он ОДОБРИЛ !!!
Завтра начну сборку...   я ведь знал про такой вид...   как-то не пришло в голову...
Но по алгоритму сборки - здесь тоже получатся запросы по каждой записи одной базы к другой...  и построение зависимостей... да ?
Здесь же нет ни какого волшебства, что зависимости могут сами-собой выстроиться ?

Времени не хватает... :-(

10

Re: SQL: Объединение данных из 2-х таблиц

Не-а . Во всяком случае, для MS Access можно обойтись без запросов. Подобные таблицы строятся автоматически на основании заданных связей из построенной схемы базы данных (\Сервис\Схема данных…).

Потом, конечно, можно оформить запросами, дабы скрыть ненужные поля, заблокировать для изменений (или сделать поля вычисляемыми), изменить представление полей и т.п.

P.S. Думаю, Вы представляете, о чём речь. Если нет — откройте «%ProgramFiles%\Microsoft Office\OFFICEXX\SAMPLES\Борей.mdb» и посмотрите на тамошнюю схему. Проще говоря, схема — это связи между таблицами базы данных, получаемые при декомпозиции предметной области и переводе данных в 3НФ и выше.

11 (изменено: Евген, 2011-04-07 19:44:08)

Re: SQL: Объединение данных из 2-х таблиц

О! - тема...
Я Access до этого использовал только как смотрелку для БД
А тут какие-то схемы...
завтра с материалом попробую разобраться...

PS.: Позырил схему БОРЕЙ - мда...:/

Времени не хватает... :-(

12 (изменено: Евген, 2011-04-08 14:40:14)

Re: SQL: Объединение данных из 2-х таблиц

Вообщем идея здоровская !!! Только единственное что не получилось это то, что при создании главной таблицы с ключевым полем arm (АРМ) при установлении связей с зависимыми таблицами (их не одна и не две, их больше) Access предлагает при выборе подзапроса вывести только одну из них

Решил вопрос по другому...   (сейчас буду реализовывать)
Для создания вложенной структуры создал дополнительно 2 поля (ParentID и ChildrenID) в связи указал зависимость ChildrenID от ParentID, таким образом создаётся многовложенная структура (вложенность не ограниченная), с помощью чего можно описать любые параметры родительского элемента на неограниченную глубину вложений (дочерних элементов).

Времени не хватает... :-(

13 (изменено: Евген, 2011-04-08 14:10:57)

Re: SQL: Объединение данных из 2-х таблиц

Блин...   вроде вообще нормуль получилось а ?
пример базы с результатами инвентаризации 2-х АРМов
http://korosteleff.narod.ru/result.bmp

Времени не хватает... :-(