Страница: 1 |
Страница: 1 |
Вопрос: Поиск в базе данных Access
Добавлено: 12.11.08 10:24
Автор вопроса: Alto
В базе есть несколько таблиц. Как осуществить поиск по этим таблицам по нескольким параметрам, чтобы можно было использовать как несколько зависимых параметров, т.е через and и так же независимых через or. Результаты поиска необходимо вывести в форму на просмотр.
Ответы
Всего ответов: 9
Номер ответа: 1
Автор ответа:
Aston
ICQ: 214-179-991
Вопросов: 42
Ответов: 272
Профиль | | #1
Добавлено: 12.11.08 21:26
Для этого надо использовать SQL запрос. Если поиск идет по нескольким таблицам то желательно, чтобы они имели ключевый поля - тоесть были связаны по какому то полю.
например SQL запрос.
Select (указываеш имена полей которые будут вывадится - через запятую) from (указываеш имя таблицы или связываеш таблицы по ключевым полям) where (условие).
Select Name,SerName,Pol from People where name = Jon and SerName = Smith
Вроде так - запросы делал давно - но сам недавно к ним вернулся)
Номер ответа: 2
Автор ответа:
Alto
Вопросов: 3
Ответов: 5
Профиль | | #2
Добавлено: 13.11.08 11:10
Все понятно. Но все несколько сложнее. Суть дела в следующем: есть некие таблицы с данными архивными у которых структура различная, но часть полей совпадает . В них может содержаться до 65000 строк. Так вот как осуществить поиск по определенным параметрам и чтобы процесс поиска не тормозился. Ранее просто открывали кучу этих таблиц по очереди и пытались найти нужную инфу, а сейчас пытаюсь все это соединить в access и сделать удобным и быстрым поиск по этим таблицам, причем кол-во данных таблиц не конечное, т.е. они создаются постоянно через программу написанную в excel, причем отказаться от этой проги нельзя, она регламентирована. Я планировал просто подцеплять их к базе как связанные таблицы. Так же планировал все таблицы объединить с помощью запроса на объединение sql, но такой большой объем данных все же тяжел при объединении...
Номер ответа: 3
Автор ответа:
Alto
Вопросов: 3
Ответов: 5
Профиль | | #3
Добавлено: 13.11.08 11:12
Все понятно. Но все несколько сложнее. Суть дела в следующем: есть некие таблицы с данными архивными у которых структура различная, но часть полей совпадает . В них может содержаться до 65000 строк. Так вот как осуществить поиск по определенным параметрам и чтобы процесс поиска не тормозился. Ранее просто открывали кучу этих таблиц по очереди и пытались найти нужную инфу, а сейчас пытаюсь все это соединить в access и сделать удобным и быстрым поиск по этим таблицам, причем кол-во данных таблиц не конечное, т.е. они создаются постоянно через программу написанную в excel, причем отказаться от этой проги нельзя, она регламентирована. Я планировал просто подцеплять их к базе как связанные таблицы. Так же планировал все таблицы объединить с помощью запроса на объединение sql, но такой большой объем данных все же тяжел при объединении...
Номер ответа: 4
Автор ответа:
Artyom
Разработчик
Вопросов: 130
Ответов: 6602
Профиль | | #4
Добавлено: 13.11.08 14:35
Я бы вам советовал пересмотреть архитектуру приложения.
Также не совсем ясно, как вы предполагаете в одном запросе выполнять объединение (UNION) таблиц с разной схемой.
Номер ответа: 5
Автор ответа:
Alto
Вопросов: 3
Ответов: 5
Профиль | | #5
Добавлено: 13.11.08 14:47
Если есть варианты, то изложите. А запрос на объединение это просто как я и говорил есть часть полей таблиц, совпадающих во всех, поэтому соединить их можно, а там где поля различны просто прописать Null. И весь массив тогда будет готов для вывода в готовую форму, в которой будет предусмотрены все поля из данного объединения.
Номер ответа: 6
Автор ответа:
Aston
ICQ: 214-179-991
Вопросов: 42
Ответов: 272
Профиль | | #6
Добавлено: 13.11.08 23:08
Я так понял сложность состоит в том что сам запрос сильно грузит машину так?, так как записей очень много и сам СКЛ запрос не решает те задачи что тебе надо с той скоростью как хотелось бы или как?)
Номер ответа: 7
Автор ответа:
Artyom
Разработчик
Вопросов: 130
Ответов: 6602
Профиль | | #7
Добавлено: 13.11.08 23:27
Протестируйте каждый запрос отдельно на таблице.
Union здесь совершенно не при чем.
Если сам запрос долго выполняется, то в ACCESS в принципе мало что еще можно сделать, я бы советовал рассмотреть переход на SQL Server, и далее если не удовлетворяет производительность, анализировать планы выполнения и оптмизировать их.
Впрочем индексы не мешало бы добавить в и MS Access если они там имеются.
Номер ответа: 8
Автор ответа:
Alto
Вопросов: 3
Ответов: 5
Профиль | | #8
Добавлено: 14.11.08 17:28
Спасибо за совет, но на sql server не хотелось бы. Если возможно то приведите пример кода отбора записей по нескольким параметрам, причем чтобы выбирала не польностью по полю, а совпадение по части поля. Простой запрос в виде select ... я знаю как писать, а как прописать, чтобы по нескольким параметрам и еще с выбором по всем параметрам или же по любому из них.
Номер ответа: 9
Автор ответа:
Artyom
Разработчик
Вопросов: 130
Ответов: 6602
Профиль | | #9
Добавлено: 14.11.08 19:15
Для этого нужно делать условия Like
Например
или