Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > Базы данных
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 16.02.2014, 20:32
govorun govorun вне форума
Новичок
 
Регистрация: 30.10.2013
Сообщения: 60
Версия Delphi: delphi 7
Репутация: 10
По умолчанию Запрос к запросу

Имеется запрос1 к базе.
Как записать запрос2, что бы он работал ТОЛЬКО с данными, полученными в запросе1.
Что то типа
Код:
select...From adoquery1 where...

Можно конечно в запросе2 указать теже условия что и в запросе1, но для верности хочется работать с уже отобранными данными.
Ответить с цитированием
  #2  
Старый 16.02.2014, 20:36
lmikle lmikle вне форума
Модератор
 
Регистрация: 17.04.2008
Сообщения: 8,087
Версия Delphi: 7, XE3, 10.2
Репутация: 49089
По умолчанию

Это?
Код:
select * from
(
select 
  f1,f2,f3 
from 
  tbl1
) foo
where f1 = 1000;

А, вообще, можно и view сделать из первого запроса...
Ответить с цитированием
  #3  
Старый 16.02.2014, 20:47
govorun govorun вне форума
Новичок
 
Регистрация: 30.10.2013
Сообщения: 60
Версия Delphi: delphi 7
Репутация: 10
По умолчанию

Цитата:
Сообщение от lmikle
Это?
Код:
select * from
(
select 
  f1,f2,f3 
from 
  tbl1
) foo
where f1 = 1000;

А, вообще, можно и view сделать из первого запроса...
Похоже, что не то...
Здесь происходит дублирование запроса1, а нужно работать с уже отобранными данными.
Может как то можно подвязать datasource, относящийся к adoquery1?
Ответить с цитированием
  #4  
Старый 16.02.2014, 22:06
govorun govorun вне форума
Новичок
 
Регистрация: 30.10.2013
Сообщения: 60
Версия Delphi: delphi 7
Репутация: 10
По умолчанию

Не догоняю я никак....
Вот первый запрос
Код:
A1:=STRTOINT(FORM2.Edit1.Text);
    ADOQUERY1.Close;
    ADOQUERY1.SQL.Text:='select S, OTD, DATA_POS, FIO, SUMMA, VAL, SD_V_KL, SD_V_CBU '+
                        'FROM INKASSO '+
                        'WHERE OTD=:A1 AND SD_V_KL<>1 AND SD_V_CBU<>1';
    ADOQUERY1.Parameters[0].Value:=A1;
    ADOQUERY1.Open;
Теперь нужно из первого запроса подсчитать сумму по полю 'SUMMA' where 'VAL' =30 as 30 и 'VAL' =40 as 40

AS 30 и AS 40 нужны, чтобы потом эти суммы показать в EDIT
Ответить с цитированием
  #5  
Старый 17.02.2014, 01:14
lmikle lmikle вне форума
Модератор
 
Регистрация: 17.04.2008
Сообщения: 8,087
Версия Delphi: 7, XE3, 10.2
Репутация: 49089
По умолчанию

Тогда считай кодом на клиенте. Напрямую Дельфи такое не позволяет.
Либо можно выполнить простенький дополнительный запрос, но он будет повторять этот запрос.
Ответить с цитированием
  #6  
Старый 17.02.2014, 10:09
Аватар для Mrak
Mrak Mrak вне форума
Местный
 
Регистрация: 26.01.2013
Адрес: МО
Сообщения: 438
Версия Delphi: XE2
Репутация: 17
По умолчанию

да все правильно уважаемый lmikle написал
и это будет не "дублирование запроса1", а создание временной таблицы, типа, представь, что у тебя есть такая таблица, вот и выбирай с нее суммы, количества, средние...

т.е.

Код:
 SELECT (SELECT SUM(SUMMA) where VAL = 30) as Sum_30,  
           (SELECT SUM(SUMMA) where VAL = 40) as Sum_40 FROM 
           (SELECT S, OTD, DATA_POS, FIO, SUMMA, VAL, SD_V_KL, SD_V_CBU FROM INKASSO 
           WHERE OTD=:A1 AND SD_V_KL<>1 AND SD_V_CBU<>1) as My_New_Table
__________________
Я за здоровый экстрим!
Спасибо за "спасибо")
Ответить с цитированием
Ответ


Delphi Sources

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

Расширенный поиск
Опции просмотра
Комбинированный вид Комбинированный вид

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 00:05.


 

Сайт

Форум

FAQ

Соглашения

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2025