Форум программистов, компьютерный форум, киберфорум
Наши страницы

Delphi и базы данных

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 14, средняя оценка - 4.79
mikhea
0 / 0 / 0
Регистрация: 11.02.2010
Сообщений: 14
#1

Запрос Delphi+Access - Delphi БД

11.02.2010, 08:04. Просмотров 1740. Ответов 4
Метки нет (Все метки)

Доброго времени суток!

Столкнулся с такой проблемой. Есть база данных, в базе таблица с большим количеством записей. В таблице 2 поля: Название и Номер. Есть массив с достаточно большим числом элементов (порядка 2000). Требуется извлечь те данные из таблицы, где содержимое поле Номер совпадает с одним из эл-тов массива. Подскажите, как это лучше сделать? Понятно, что при запросе написать в разделе WHERE 2000 раз "OR" не получится. Пытался сравнивать данные отдельно с каждым эл-том массива и добавлять в некоторую временную таблицу, однако скорость работы программы в таком случае ужасна. Какие еще есть варианты? Спасибо за помощь.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
11.02.2010, 08:04
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Запрос Delphi+Access (Delphi БД):

SQL-запрос в Delphi и в Access один и тот же, но в Delphi не работает - Delphi БД
ри обращение к базе в Access я использую код: with ADOQueryMain do begin Active:=false; SQL.Clear; SQL.Add('SELECT Code,...

Запрос из Access в Delphi - Delphi БД
Помогите создать запрос с помощью ADOQuery!!! Имееются 4 связанные таблицы из access: с полями: Название турнира, Дата проведения. ...

Access+Delphi запрос - Delphi БД
Как изменить запрос: SELECT COUNT(max(счет)) cnt FROM Выплаты group by счет HAVING MAX(Дата)< DATE '2011-01-01'; нати количество...

Access и Delphi. Базовый запрос. - Delphi БД
Условие задачи: http://s48.***********/i121/1001/be/2fb2009373df.jpg Суть проблемы: совсем не работает базовый запрос, по идее, при...

Запрос в access выполняется, а в delphi нет - Delphi БД
Есть запрос в делфи ругается "отсутствует значение для одного или нескольких требуемых параметров" Этот же запрос в access выполняется....

Delphi+ADO+access SQL запрос - Delphi БД
Добрый день уважаемые програмисты!. Помогите разобраться. Есть таблица в Аксесе: Data Doxod Rasxod Необходимо произвести...

4
Андрей Борисови
708 / 396 / 18
Регистрация: 04.10.2009
Сообщений: 1,683
11.02.2010, 08:27 #2
Внутреннее объединение
Внутренние объединения — наиболее часто встречающийся тип объединений. Они представляют собой запросы, в которых строки одной из объединяемых таблиц соответствуют строкам другой таблицы по значениям в связанных полях. При выполнении запроса с внутренним объединением в операцию включаются только строки, имеющие одинаковые значения в обеих связанных таблицах.

SQL-синтаксис внутреннего объединения

Внутренние объединения в SQL описываются предложением FROM, как показано ниже:
FROM таблица1 INNER JOIN таблица2 ON таблица1.поле1оператор_сравнения таблица2.поле2

Операция INNER JOIN состоит из следующих элементов.
Элемент Описание
таблица1, таблица2 Имена таблиц, записи которых объединяются.
поле1, поле2 Имена связываемых полей. Если поля не числовые, они должны относиться к
одному типу данных (Тип данных. Характеристика поля, определяющая тип
данных, который может содержать это поле. Существуют следующие типы
данных: Boolean, Integer, Long, Currency, Single, Double, Date, String и Variant
(по умолчанию).) и содержать данные одного вида. Имена этих полей могут
быть разными.
оператор_сравнения Любой оператор сравнения: «=», «<», «>», «<=», «>=» или «<>».

Дополнительные сведения о синтаксисе внутренних объединений см. в разделе Операция INNER JOIN.
Справка Аксцесс 2007

т.е. Вы добавляете пустую таблицу в БД, из массива её заполняете, выполняете запрос на Внутреннее объединение и получаете совпадения

или методом перебора каждого-к-каждому... Но тогда используйте функцию loockup (не точно)
1
SAMZ
1261 / 704 / 13
Регистрация: 21.12.2009
Сообщений: 2,255
11.02.2010, 10:29 #3
Цитата Сообщение от mikhea Посмотреть сообщение
Пытался сравнивать данные отдельно с каждым эл-том массива и добавлять в некоторую временную таблицу
1. Думаю, сравнение отдельно с каждым эл-том массива к хорошему результату не приведет
2. добавлять в некоторую временную таблицу - так можно добиться результата при правильной организации временной таболицы и корректном запросе
0
\/
12 / 11 / 2
Регистрация: 11.02.2010
Сообщений: 57
11.02.2010, 20:08 #4
Про индекс в новой таблице, не забудьте)
Ну и опционально group by или distinct пользовать, возможно придется)
0
mikhea
0 / 0 / 0
Регистрация: 11.02.2010
Сообщений: 14
12.02.2010, 00:22  [ТС] #5
Спасибо большое, вариант с добавлением массива в таблицу очень помог
0
12.02.2010, 00:22
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
12.02.2010, 00:22
Привет! Вот еще темы с ответами:

Параметрический запрос Delphi & Access - Delphi БД
Вообщем есть запрос SELECT Фамилия, Имя, Отчество, Дата_рождения, Адрес_проживания, Номер_паспорта, Серия_паспорта, Кем_выдан_Паспорт,...

Запрос на создание таблицы в Access из Delphi - Delphi БД
В общем, проблема такая. Есть БД в Access, в ней есть запрос на создание таблицы (составить список клиентов, не выплативших кредит). Есть...

Delphi+Access+SQL запрос по дате - Delphi БД
Добрый день. Подскажите пожалуйста. У меня есть следующий код. Form28.DateTimePicker4.Date := Date; Form28.DateTimePicker4.Time :=...

Как связать запрос access с delphi? - Delphi БД
kakoi kod nujen


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru