Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - Работа с данными

Страница: 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
Например
  1. SELECT * FROM Users WEHRE Name Like '%asdf%'

или
  1. SELECT * FROM Users WEHRE Name Like '*asdf*'

Ответить

Страница: 1 |

Поиск по форуму



© Copyright 2002-2011 VBNet.RU | Пишите нам