Задавайте вопросы, мы ответим
Вы не зашли.
Коллеги, приветствую !
Есть вопрос следующего содержания:
Имеется 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|
JOIN случайно не для этого ? - не разу им не пользовался....
Смысл в том, что мне надо собрать такую матрицу по ~ 3000 компов... :-(
Отредактированно Евген (06.04.2011 19:17:41)
Неактивен
С помощью join вы получите следующую конструкцию:
Дата инвентаризации| Имя АРМ| ...| MAC Адрес| login1| isadmin1| disabled1|
Дата инвентаризации| Имя АРМ| ...| MAC Адрес| login2| isadmin2| disabled2|
...
Дата инвентаризации| Имя АРМ| ...| MAC Адрес| login4| isadmin4| disabled4|
Неактивен
А можно ли как-нибудь запросом получить желыемый вид (матрицей)?
Дата инвентаризации| Имя АРМ| Процессор| S/N BIOS| Операционная система| IP адрес| MAC Адрес| login1| isadmin1| disabled1| login2| isadmin2| disabled2| login3| isadmin3| disabled3|
Отредактированно Евген (07.04.2011 12:59:35)
Неактивен
В частом случае, если одной записи из primary соответствуют не более 3-ёх из secondary, можете написать 3 раза join с громоздким условием.
Неактивен
Ну хорошо...
давайте хоть такой пример разберём...
всё равно надо попробовать двигаться в этом направлении...
Неактивен
Евген написал:
давайте хоть такой пример разберём...
Ввел вас в заблуждение даже в частном случае не получиться.
Евген написал:
всё равно надо попробовать двигаться в этом направлении...
Сделайте 1 join, а потом обрабатывайте результат в клиентском приложении, добиваясь желаемого вида (например, сохраняйте в массив нужного вам вида).
Неактивен
Угу... сейчас так и делаю...
моментально получаю рекордсет primary, потом его полностью перебирая делаю к нему выборку из secondary и результат помещаю в Excel. Сервер лежит 8 минут
Поэтому и задался вопросом оптимизации...
пока как временное решение эти операции вынес в регламентные (на ночь) но хотелось бы прибавить серверу оперативности в виде алгоритмов sql запроса и вернуть эти операции в онлайн...
Неактивен
Вы можете сделать primary join secondary и полученный результат обрабатывать. В этом случае не придется делать кучу запросов к secondary.
Неактивен
Это как так ?
Объясните что в рекордсете получиться ?
и каким запросом его собрать ?
Неактивен
Евген написал:
Объясните что в рекордсете получиться ?
пост №2 в этой теме
Евген написал:
и каким запросом его собрать ?
primary join secondary using(`Дата инвентаризации`,`Имя АРМ`)
Неактивен
Угу... и за это спасибо... :-)
Неактивен