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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 31.08.2009, 11:52   #1
befame
 
Регистрация: 07.07.2009
Сообщений: 7
Вопрос Повторяющиеся переменные в SQL-запросе

Проблема в следующем:
Есть БД в Access, из delphi необходимо выполнить следующий запрос(В запросе 2 переменные: Type и MaxHead.)

SELECT Runner
FROM Turbine
WHERE (Priority = 1) and (TypeRunner = (SELECT TypeRunner
FROM Type
WHERE (Type = :Type) and (MaxHead = (SELECT MIN(MaxHead)
FROM Type
WHERE (Type = :Type) and (MaxHead > :MaxHead)))))

В таком виде запрос выдает null. Запрос великолепно выполняется если заменить :Type в первом случае на конкретное значение. Проверял запрос в самом Accesse, там все правильно работает. Может кто-нибудь сталкивался с такой проблемой?
befame вне форума Ответить с цитированием
Старый 31.08.2009, 12:10   #2
soleil@mmc
SQL-коддинг
Участник клуба
 
Регистрация: 16.01.2009
Сообщений: 1,192
По умолчанию

код подстановки параметров в студию
З.Ы.: и эттаа.. теги используй - CODE

смотрибельнее же вот так

Код:
SELECT Runner
FROM Turbine
WHERE Priority = 1 
     and TypeRunner = (SELECT TypeRunner
                              FROM Type
                             WHERE Type = :Type 
                                  and MaxHead = (SELECT MIN(MaxHead)
                                                          FROM Type
                                                         WHERE Type = :Type 
                                                              and MaxHead > :MaxHead
                                                        )
                                )
З.Ы.:2: кстати, круто обзывать таблицу и поле в ней одинаково

и эттааа... точно есть уверенность, что таких дынных будет одна строка в каждом подзапросе?

Последний раз редактировалось soleil@mmc; 31.08.2009 в 12:20.
soleil@mmc вне форума Ответить с цитированием
Старый 31.08.2009, 14:49   #3
befame
 
Регистрация: 07.07.2009
Сообщений: 7
По умолчанию

После непродолжиетльных танцев с бубном, запрос начал работать. Странность в том, что в параметрах запроса ADOQuery автоматически создались переменные :Type и :MaxHead (вместо Type и MaxHead). С ними все замечательно работает.
Если позволите еще один вопрос: можно ли в SQL запросе имя таблицы задать в качестве переменной.

З.Ы. 2soleil@mmc: спасибо за замечания, учту в следующий раз))
befame вне форума Ответить с цитированием
Старый 31.08.2009, 15:21   #4
soleil@mmc
SQL-коддинг
Участник клуба
 
Регистрация: 16.01.2009
Сообщений: 1,192
По умолчанию

Цитата:
Сообщение от befame Посмотреть сообщение
можно ли в SQL запросе имя таблицы задать в качестве переменной.
можно
через сборку запроса
Код:
var
  l_table_name: string;
begin
....
  l_table_name:= 'test';
  AdoQuery.SQL.text := 'select * from '|| l_table_name;
  AdoQuery.prepare;
  AdoQuery.open;
этот код не проверен в ИДЕ - всего лишь наметки для показания сути
soleil@mmc вне форума Ответить с цитированием
Старый 31.08.2009, 15:33   #5
befame
 
Регистрация: 07.07.2009
Сообщений: 7
По умолчанию

Цитата:
AdoQuery.SQL.text := 'select * from '|| l_table_name;
Хм, этот способ знаком, но я имел ввиду можно ли задать переменную в самом sql запросе, т.е. что то типа:

Код:
SELECT *
FROM :Table_name
В любом случае спаисбо.
befame вне форума Ответить с цитированием
Старый 31.08.2009, 15:50   #6
soleil@mmc
SQL-коддинг
Участник клуба
 
Регистрация: 16.01.2009
Сообщений: 1,192
По умолчанию

я тебе привел простой способ
есть посложнее: если компоненты, которыми ты пользуешься умеют работать с макросами, то можно через макросы
soleil@mmc вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Переменные в запросе SQL Talemir БД в Delphi 2 22.08.2009 21:22
Оператор IF в SQL-запросе eda SQL, базы данных 1 25.04.2009 18:41
Ковычки в SQL запросе XPAiN БД в Delphi 13 22.02.2008 13:36
Ошибка SQL запросе. EVG44 БД в Delphi 2 21.10.2007 22:42
Ошибка в SQL запросе eremin БД в Delphi 2 23.06.2007 07:13