Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2003.08.07;
Скачать: CL | DM;

Вниз

Ограниченные возможности SQL в BDE...   Найти похожие ветки 

 
KIR ©   (2003-07-16 17:08) [0]

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

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

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

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


 
MsGuns ©   (2003-07-16 17:11) [1]

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


 
KIR ©   (2003-07-16 17:22) [2]

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


 
MsGuns ©   (2003-07-16 17:36) [3]

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


 
Johnmen ©   (2003-07-16 17:42) [4]

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


 
KIR ©   (2003-07-16 17:43) [5]

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


 
Johnmen ©   (2003-07-16 17:53) [6]

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

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

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

WHERE
DAT <= :PARAM1


 
MsGuns ©   (2003-07-16 17:55) [7]

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


 
KIR ©   (2003-07-16 18:01) [8]

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

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


 
Sandman25 ©   (2003-07-16 18:08) [9]

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


 
Sandman25 ©   (2003-07-16 18:11) [10]

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


 
KIR ©   (2003-07-16 18:14) [11]

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

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


 
Sandman25 ©   (2003-07-16 18:18) [12]

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

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


 
KIR ©   (2003-07-16 18:23) [13]

Вот же мой вариант в предыдущем сообщении Вы использовали 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:27) [14]

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



Страницы: 1 вся ветка

Текущий архив: 2003.08.07;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.03 c
14-20748
Вовка Путин
2003-07-19 10:15
2003.08.07
Сегодня в рассылке прислали


14-20693
han_malign
2003-07-23 11:35
2003.08.07
Давно пора ...


14-20718
snake1977
2003-07-23 16:52
2003.08.07
Viersion info


14-20738
Cmenil
2003-07-20 16:42
2003.08.07
Вот как узнать когда...


14-20686
sapsi
2003-07-07 08:44
2003.08.07
Терминатор-3 Восстание машин