Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > БД в Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 26.08.2008, 17:51   #1
Dux
Delphi Master
Форумчанин Подтвердите свой е-майл
 
Аватар для Dux
 
Регистрация: 31.03.2008
Сообщений: 803
По умолчанию SQL запрос

Необходимо сделать запрос в 10 таблиц базы данных ACCESS. Дело в том, что длина строки запроса получается слишком велика, можно ли как-то упростить запрос? Для объединения запросов использую UNION.

Пример запроса в 2 таблицы, а надо в 10:

Код:
ADOQuery1.SQL.add('SELECT * FROM LIST1 where Availability = "ASAP" UNION SELECT * FROM LIST2 where Availability = "ASAP"');
Dux вне форума Ответить с цитированием
Старый 27.08.2008, 10:56   #2
Flenov
Форумчанин
 
Аватар для Flenov
 
Регистрация: 20.06.2008
Сообщений: 168
По умолчанию

Можно сделать так:
Код:
Str:='первая часть запроса';
Str:=Str+'вторая часть запроса';
Str:=Str+'третья часть запроса';
...
ADOQuery1.SQL.add(Str);
Но лучше так

Код:
ADOQuery1.SQL.add('Первая часть запроса');
ADOQuery1.SQL.add('Вторая часть запроса');
ADOQuery1.SQL.add('Третья часть запроса');
Flenov вне форума Ответить с цитированием
Старый 27.08.2008, 11:03   #3
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Немного не в тему, но может быть важно для получаемых результатов:
я бы рекомендовал вместо
UNION
использовать
UNION ALL
Serge_Bliznykov вне форума Ответить с цитированием
Старый 27.08.2008, 11:49   #4
Dux
Delphi Master
Форумчанин Подтвердите свой е-майл
 
Аватар для Dux
 
Регистрация: 31.03.2008
Сообщений: 803
По умолчанию

Цитата:
Сообщение от Serge_Bliznykov Посмотреть сообщение
Немного не в тему, но может быть важно для получаемых результатов:
я бы рекомендовал вместо
UNION
использовать
UNION ALL
А какая разница в результате будет?
Dux вне форума Ответить с цитированием
Старый 27.08.2008, 12:27   #5
Flenov
Форумчанин
 
Аватар для Flenov
 
Регистрация: 20.06.2008
Сообщений: 168
По умолчанию

union all объединяет все строки, даже если они повторяются в разных наборах, а union без повторений
Flenov вне форума Ответить с цитированием
Старый 27.08.2008, 13:36   #6
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

к словам Flenov добавить нечего! Точно так!

когда-то давно, по незнанию, выкинул из сложного запроса код (ID) объекта, и потом долго отлаживал запрос, не понимая, почему количество записей при использовании union становится МЕНЬШЕ, чем в запросах без объединения... :-))))
Serge_Bliznykov вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
запрос ссылается на несвязанный с ним запрос kolebatel SQL, базы данных 0 11.06.2008 12:50
SQL запрос Uomo БД в Delphi 17 23.04.2008 14:12
SQL запрос SERG1980 БД в Delphi 6 19.10.2007 23:03
SQL-запрос Alexey_vyb БД в Delphi 4 22.05.2007 18:52
SQL-запрос Elena БД в Delphi 3 17.05.2007 15:13