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

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

Ограниченные возможности SQL в BDE...


KIR ©   (2003-07-16 17:08:00) 

Народ, работаю с базой Pardox. Подребовалось создать запрос следующего вида:

SELECT
ID
FROM
MYTABLE
WHERE
MAX(DAT) <= :PARAM1
AND

BDE говорит, что "Capability not supported"...

Народ, может подскажете, как же мне все таки выбрать из таблицы все записи с одинаковыми ID, где поле DAT не превышает значение определенного параметра?


Sandman25   (2003-07-16 18:27:00) [1]

Мой вариант быстрее. Он устанавливает только наличие самого факта выполнения подзапроса (независящего от текущей строки, как и Ваш подзапрос), Ваш же запрос заставляет сравнивать текущий id, причем с каждым id, возвращаемым подзапросом.


KIR   (2003-07-16 18:23:00) [2]

Вот же мой вариант в предыдущем сообщении Вы использовали NOT EXISTS, а я WHERE ID NOT IN

select *
from mytable
where id = 123
and id not in
(select *
from mytable
where id = 123
and dat > 3
)


Sandman25   (2003-07-16 18:18:00) [3]

>поводу решения я примерно так и сделал, только я применил не not exests, а WHERE ID NOT IN и т.д., кстати есть ли разница...

Напишите Ваш вариант, чтобы я мог ответить.


KIR   (2003-07-16 18:14:00) [4]

На самом деле это не ID, а PATID - внешний ключ и вообще запрос гораздо сложнее (2 листа А4 10 шрифтом). Я просто для простоты примера назвал его ID.

А поводу решения я примерно так и сделал, только я применил не not exests, а WHERE ID NOT IN и т.д., кстати есть ли разница...


Sandman25   (2003-07-16 18:11:00) [5]

PS. Странная структура базы. ID обычно называют уникальное поле.


Sandman25   (2003-07-16 18:08:00) [6]

select *
from mytable
where id = 123
and not exists
(select *
from mytable
where id = 123
and dat > 3
)


KIR   (2003-07-16 18:01:00) [7]

Поясню: например в таблице 5 записей с ID 123. Для простоты предположим что этим записям соответсвует поле DAT со значениями 1,2,3,4,5. В моем запросе я передаю параметру значение, скажем, три. Получу три записи, так? А мне требуется следующее: если есть хоть одна запись, у которой ID зоть и 123, но значение поля DAT больше параметра, то ни одна запись с ID 123 не попадает в НД.

Я, кстати, эту задачу решил... интересно было бы посмотреть на Ваши варинты


MsGuns   (2003-07-16 17:55:00) [8]

Так а в чем трабла-то ? В гайке или верблюде ? Что из чего надо получить ?
Если верблюд, то из KIR © (16.07.03 17:08) не понятно ничегошеньки.


Johnmen   (2003-07-16 17:53:00) [9]

>...выбрать из таблицы все записи с одинаковыми ID...

Что это значит ?

>.., где поле DAT не превышает значение определенного параметра?

WHERE
DAT <= :PARAM1


KIR   (2003-07-16 17:43:00) [10]

Ну да... :)), так все таки, может быть присоветуете, как проблему-то рещить?


Johnmen   (2003-07-16 17:42:00) [11]

Забавно... :)
SQL подучить бы...


MsGuns   (2003-07-16 17:36:00) [12]

Ну да, почти по Райкину:
Сунул верблюду гайку - не жрет ! Скотина, а рррразбирается ;)


KIR   (2003-07-16 17:22:00) [13]

Я грешил на BDE из-за фразы "Capability not supported"


MsGuns   (2003-07-16 17:11:00) [14]

Сам запрос не имеет смысл. Причем здесь BDE ?


Наверх

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