Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Запрос на разные даты [D6, IB6.x]


N&N ©   (2003-05-23 12:13:00) 

Уважаемые мастера, подскажите, пожалуйста, как составить запрос.
Суть такова - есть таблица Table1 с полями ID, Data, Field1, Field2, Field3.
как составить запрос, чтобы выбрать из полей Field1, Field2, Field3 на разные даты?
Что-то наподобие такого
select Field1, Field2, Field3 from Table1
where Field1 = ’01.01.03’ and
Field2 =’01.04.03’ and
Field3 = ’01.05.03’


N&N   (2003-05-26 07:59:00) [1]

>Zacho, упрощенная структура:
ID INTEGER NOT NULL,
Name VARCHAR(20) CHARACTER SET WIN1251 NOT NULL,
DATA TIMESTAMP,
Field1 INTEGER,
Field2 INTEGER,
Field3 INTEGER,
PEREDAN_DEL_SUD INTEGER,
PRIMARY KEY (ID);
Как я уже писал, по составленному запросу выдает в 1-м столбце как надо, а во втором одинаковые во всех строках сверху донизу числа, равные сумме столбца по полю Field2, так же и в 3-м столбце, только отображаются суммы по полю Field3,
в Gride получается примерно такая картинка:

Name ! Field1 ! Field2 ! Field3
--------------------------------
Name1 5 135 124
Name2 7 135 124
Name3 9 135 124
... ... ... ...
NameN 6 135 124


Zacho   (2003-05-23 17:04:00) [2]


> N&N (23.05.03 16:05)

Более подробно опиши структуру таблицы.


N&N   (2003-05-23 16:05:00) [3]

>for balbes and for Zacho
Извиняюсь за непроходимую тупость, но оба варианта у меня работают кривовато: в Gride в 1-й колонке все ОК, а в следующих колонках отображаюся одинаковые значения во всех строках сверху до низу, никак не догоню, почему. Вот такой упрощенный запрос по вашей подсказке:
Select SUM(t.field1),
(select SUM(t1.field2) from table1 t1
where t1.data="01.02.03"),
(select SUM(t2.field3) from Table1 t2
where t2.data="01.03.03")
from Table1 t
where t.data="01.01.03" group by field_N


Zacho   (2003-05-23 14:07:00) [4]

Не, похоже ему нужен не UNION, а JOIN этой таблицы с ней же.
Например, что-то типа этого:
SELECT T.FIELD1,
(SELECT T2.FIELD2 FROM TABLE1 T2 WHERE T2.DATA=:DATA),
...
FROM TABLE1 T
WHERE T1.DATA=..


balbes   (2003-05-23 13:43:00) [5]

select field1 from table1 t1
where t1.data=:date1
unoin
select field2 from table1 t2
where t2.data=:date2
union
select field3 from table1 t3
where t3.data=:date3

дальше пошли варианты


N&N   (2003-05-23 13:39:00) [6]

To Zacho>Это из какого диалекта SQL и что должно делать ?
Из гипотетического, это я привел пример желаемого запроса, а вообще мне нодо, чтобы запросить и отобразить в DBGrid"e несколько стобцов на начало года (остатки на 01.01.03), а в других столбцах - на переменную дату, которую указывает юзер.


Johnmen   (2003-05-23 13:33:00) [7]

Короче... Приведи, как выглядит набор данных,который ты хочешь получить !


Zacho   (2003-05-23 13:29:00) [8]


> N&N (23.05.03 13:25)
> where Field1 for Data =’01.01.03’ and
> Field2 for Data =’01.04.03’ and
> Field3 for Data = ’01.05.03’

Что это такое ??? Это из какого диалекта SQL и что должно делать ?


N&N   (2003-05-23 13:25:00) [9]

To Zacho>Не понял, в каком поле все-таки даты содержатся ? И что все-таки в результате получить надо ?
Даты содержатся в поле Data, а получить надо выборку из полей Field1, Field2, Field3
Может быть так будет понятнее, что я хочу получить:
select Field1, Field2, Field3 from Table1
where Field1 for Data =’01.01.03’ and
Field2 for Data =’01.04.03’ and
Field3 for Data = ’01.05.03’




dash78   (2003-05-23 12:43:00) [10]

select Field1, Field2, Field3
from Table1
where data in ( ’01.01.03’,01.04.03’, ’01.05.03’)

если я правильно понял вопрос :)


Zacho   (2003-05-23 12:37:00) [11]

Не понял, в каком поле все-таки даты содержатся ? И что все-таки в результате получить надо ?


Johnmen   (2003-05-23 12:36:00) [12]

А чем не устраивает "такое" ?


Наверх

Титульная страница Поиск, карта сайта Написать письмо