Страница: 1 | 
		
		 
			   
			 
			 
			 
			 Страница: 1 | 
 
			
 
  
		
     
  
    
Вопрос: Поиск в базе данных Access
     
    
Добавлено: 12.11.08 10:24
     
      
  
				
			  
					 
			
				 
    
		
       
    
Автор вопроса:  
     Alto
 Alto
      
       
  
В базе есть несколько таблиц. Как осуществить поиск по этим таблицам по нескольким параметрам, чтобы можно было использовать как несколько зависимых параметров, т.е через and и так же независимых через or. Результаты поиска необходимо вывести в форму на просмотр. 
 
    
				
		
		
					 
			
				 
  
		
     
  
    
Ответы
     
    
Всего ответов: 9
     
      
  
		
	  
			 
	
		 
    
       
    
Номер ответа: 1 
      
Автор ответа: Aston
 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
 Alto






Вопросов: 3
Ответов: 5
      
 Профиль |  | #2
       
Добавлено:  13.11.08 11:10
       
    
       
  
Все понятно. Но все несколько сложнее. Суть дела в следующем: есть некие таблицы с данными архивными у которых структура различная, но часть полей совпадает . В них может содержаться до 65000 строк. Так вот как осуществить поиск по определенным параметрам и чтобы процесс поиска не тормозился. Ранее просто открывали кучу этих таблиц по очереди и пытались найти нужную инфу, а сейчас пытаюсь все это соединить в access и сделать удобным и быстрым поиск по этим таблицам, причем кол-во данных таблиц не конечное, т.е. они создаются постоянно через программу написанную в excel, причем отказаться от этой проги нельзя, она регламентирована. Я планировал просто подцеплять их к базе как связанные таблицы. Так же планировал все таблицы объединить с помощью запроса на объединение sql, но такой большой объем данных все же тяжел  при объединении...
 
    
		
	  
			 
	
		 
    
       
    
Номер ответа: 3 
      
Автор ответа: Alto
 Alto






Вопросов: 3
Ответов: 5
      
 Профиль |  | #3
       
Добавлено:  13.11.08 11:12
       
    
       
  
Все понятно. Но все несколько сложнее. Суть дела в следующем: есть некие таблицы с данными архивными у которых структура различная, но часть полей совпадает . В них может содержаться до 65000 строк. Так вот как осуществить поиск по определенным параметрам и чтобы процесс поиска не тормозился. Ранее просто открывали кучу этих таблиц по очереди и пытались найти нужную инфу, а сейчас пытаюсь все это соединить в access и сделать удобным и быстрым поиск по этим таблицам, причем кол-во данных таблиц не конечное, т.е. они создаются постоянно через программу написанную в excel, причем отказаться от этой проги нельзя, она регламентирована. Я планировал просто подцеплять их к базе как связанные таблицы. Так же планировал все таблицы объединить с помощью запроса на объединение sql, но такой большой объем данных все же тяжел при объединении... 
 
    
		
	  
			 
	
		 
    
       
    
Номер ответа: 4 
      
Автор ответа: Artyom
 Artyom







Разработчик
Вопросов: 130
Ответов: 6602
      
 Профиль |  | #4
       
Добавлено:  13.11.08 14:35
       
    
       
  
Я бы вам советовал пересмотреть архитектуру приложения.
 
    
Также не совсем ясно, как вы предполагаете в одном запросе выполнять объединение (UNION) таблиц с разной схемой.
		
	  
			 
	
		 
    
       
    
Номер ответа: 5 
      
Автор ответа: Alto
 Alto






Вопросов: 3
Ответов: 5
      
 Профиль |  | #5
       
Добавлено:  13.11.08 14:47
       
    
       
  
Если есть варианты, то изложите. А запрос на объединение это просто как я и говорил есть часть полей таблиц, совпадающих во всех, поэтому соединить их можно, а там где поля различны просто прописать Null. И весь массив тогда будет готов для вывода в готовую форму, в которой будет предусмотрены все поля из данного объединения.
 
    
		
	  
			 
	
		 
    
       
    
Номер ответа: 6 
      
Автор ответа: Aston
 Aston



ICQ: 214-179-991 
Вопросов: 42
Ответов: 272
      
 Профиль |  | #6
       
Добавлено:  13.11.08 23:08
       
    
       
  
Я так понял сложность состоит в том что сам запрос сильно грузит машину так?, так как записей очень много и сам СКЛ запрос не решает те задачи что тебе надо с той скоростью как хотелось бы или как?)
 
    
		
	  
			 
	
		 
    
       
    
Номер ответа: 7 
      
Автор ответа: Artyom
 Artyom







Разработчик
Вопросов: 130
Ответов: 6602
      
 Профиль |  | #7
       
Добавлено:  13.11.08 23:27
       
    
       
  
Протестируйте каждый запрос отдельно на таблице.
 
    
Union здесь совершенно не при чем.
Если сам запрос долго выполняется, то в ACCESS в принципе мало что еще можно сделать, я бы советовал рассмотреть переход на SQL Server, и далее если не удовлетворяет производительность, анализировать планы выполнения и оптмизировать их.
Впрочем индексы не мешало бы добавить в и MS Access если они там имеются.
		
	  
			 
	
		 
    
       
    
Номер ответа: 8 
      
Автор ответа: Alto
 Alto






Вопросов: 3
Ответов: 5
      
 Профиль |  | #8
       
Добавлено:  14.11.08 17:28
       
    
       
  
Спасибо за совет, но на sql server не хотелось бы. Если возможно то приведите пример кода отбора записей по нескольким параметрам, причем чтобы выбирала не польностью по полю, а совпадение по части поля. Простой запрос в виде select ... я знаю как писать, а как прописать, чтобы по нескольким параметрам и еще с выбором по всем параметрам или же по любому из них. 
 
    
		
	  
			 
	
		 
    
       
    
Номер ответа: 9 
      
Автор ответа: Artyom
 Artyom







Разработчик
Вопросов: 130
Ответов: 6602
      
 Профиль |  | #9
       
Добавлено:  14.11.08 19:15
       
    
       
  
Для этого нужно делать условия Like
 
    
Например 
или