Главная страница
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.023 c
3-20397
ruslan_as
2003-07-16 09:31
2003.08.07
Как создать уникальное значение поля в InterBase


6-20652
Adventure
2003-05-30 13:13
2003.08.07
как сохранить загруженный рисунок в TWebBrowser на диске.


6-20656
LOX
2003-05-31 20:24
2003.08.07
Компрнент TEmbeddedWB.


1-20595
Rustik
2003-07-24 11:42
2003.08.07
Кто-нибудь пробовал формулы для расчета хранить в базе


7-20835
Ромн
2003-05-21 12:25
2003.08.07
Нажатие на копку