C++ Builder
| Главная | Уроки | Статьи | FAQ | Форум | Downloads | Литература | Ссылки | RXLib | Диски |

 
Пересечение множества
richdik
Отправлено: 26.06.2003, 10:59


Не зарегистрирован








Необходимо сделать выборку данных из таблицы по двум полям
"Date" и "Time" по условию
Data>=??.??.?? and Time>=????
Data<=??.??.?? and Time<=????

Конструкция типа:
SELECT * FROM
(
SELECT * FROM "Arhiv.db" Arhiv
WHERE ( (AData>= '24.06.03') AND (ATime>= '14:00:00'))
)
WHERE ( (AData<='25.06.03') AND (ATime<='16:00:00'))

Builder не понимает
Помогите пожалуйста составить правильный SQL запрос.
Admin
Отправлено: 26.06.2003, 17:25


Владимир

Группа: Администратор
Сообщений: 1190



QUOTE

по условию
Data>=??.??.?? and Time>=????
Data<=??.??.?? and Time<=????

Вы не написали как связаны эти условия (и — или)

Если и:

Select * from myTable
where
(WData>= '01.01.2002' and WTime>= '14:00:00')
and (WData <= '31.01.2003' and WTime <= '15:00:00')

Если или:

Select * from myTable
where
(WData>= '01.01.2002' and WTime>= '14:00:00')
or (WData <= '31.01.2003' and WTime <= '15:00:00')


Отредактировано Admin — 26 Jun 2003, 17:39
Guest
Отправлено: 30.06.2003, 14:37


Не зарегистрирован







Admin

Спасибо, но
Предложенная Выми конструкция не работает.
Поначалу я тоже делал так, но потом вынужден
был обратиться к вложенным запросом.

Я все-таки образом выкрутился следующим образом

Select * from myTable
where
(WData='01.01.2002' or (WData> '01.01.2002' and WTime>= '14:00:00'))
and
(WData='31.01.2003' or (WData < '31.01.2003' and WTime '15:00:00'))

Admin
Отправлено: 30.06.2003, 22:14


Владимир

Группа: Администратор
Сообщений: 1190



QUOTE

Предложенная Выми конструкция не работает.


Конструкция работает, только значит не так, как нужно Вам.
А чтобы заработало так как нужно Вам
(отбирало что нужно), стало быть нужно нормально
объяснить так что-же Вы хотите отобрать
, тогда
и можно будет написать более простой и понятный SQL-запрос.


QUOTE

но потом вынужден был обратиться к вложенным запросом


Я что-то не вижу никаких вложенных запросов,
тот код что приведен у вас вложенным запросом не является.
richdikb
Отправлено: 02.07.2003, 15:07


Не зарегистрирован







Владимир[B]

Действительно в данном решении нет вложенного запроса,
так как было найдено решение без него.

Так что не обижайтесь на мой первый ответ .

Просто хотелось бы узнать работает ли вообще конструкция
такого вида (она алгоритмически более правильна)

SELECT * FROM
(
SELECT * FROM "Arhiv.db" Arhiv
WHERE ( (AData>= '24.06.03') AND (ATime>= '14:00:00'))
)
WHERE ( (AData<='25.06.03') AND (ATime<='16:00:00'))

и если да, то почему Buider 5 ее не понимает.

Заранее благодарен за ответ

sad.gif sad.gif sad.gif sad.gif

Вернуться в Работа с базами данных в C++Builder