Форум: "Базы";
Текущий архив: 2003.08.07;
Скачать: [xml.tar.bz2];
ВнизОграниченные возможности 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;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.009 c