powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Помогите с запросом
14 сообщений из 14, страница 1 из 1
Помогите с запросом
    #39741159
BuryCommoner
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Всем привет!
В базе в таблице лежат данные с ключом-строкой. Как написать запрос, чтоб можно было быстро узнать каких данных не хватает в таблице, имея текстовик со списком ключей?

Например, в DB2 это можно было сделать примерно так:
Код: plsql
1.
2.
3.
4.
5.
with q (id) as (values 'id1', 'id2', ...)
select id
from q
where id not in (select id from table1)
 



А как сделать такое в оракле? Без использования хранимых процедур и создания дополнительных таблиц?

---------------------------------------------------------
is null or not is null
...
Рейтинг: 0 / 0
Помогите с запросом
    #39741170
Фотография -2-
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BuryCommonerтекстовик со списком ключейЕсли строка до 4000 байт, instr. Если больше, то union. Если файл доступен на сервере, внешняя таблица.
...
Рейтинг: 0 / 0
Помогите с запросом
    #39741175
Фотография --Eugene--
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BuryCommoner,

это?
Код: plsql
1.
2.
with q as (select column_value id from table(sys.odcivarchar2list('id1', 'id2', 'id3')))
select * from q where q.id not in (select id from table1)
...
Рейтинг: 0 / 0
Помогите с запросом
    #39741181
Фотография Vadim Lejnin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BuryCommonerВсем привет!
В базе в таблице лежат данные с ключом-строкой. Как написать запрос, чтоб можно было быстро узнать каких данных не хватает в таблице, имея текстовик со списком ключей?

Например, в DB2 это можно было сделать примерно так:
Код: plsql
1.
2.
3.
4.
5.
with q (id) as (values 'id1', 'id2', ...)
select id
from q
where id not in (select id from table1)
 



А как сделать такое в оракле? Без использования хранимых процедур и создания дополнительных таблиц?

---------------------------------------------------------
is null or not is null

1) Если файл со списом ключей доступен через объект ORACLE Directory, и возможна загрузка ключей external table (при вменяемом формате )

2) использование with

Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
with q(id) as (
select 1 from dual union all
select 2 from dual union all
select 45 from dual union all
select 3 from dual
)
select id
from q
where id not in (select id from table1)
;
...
Рейтинг: 0 / 0
Помогите с запросом
    #39741221
BuryCommoner
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
--Eugene--BuryCommoner,

это?
Код: plsql
1.
2.
with q as (select column_value id from table(sys.odcivarchar2list('id1', 'id2', 'id3')))
select * from q where q.id not in (select id from table1)



Да! Это то, что нужно. Спасибо большое, завтра попробую с компа.
...
Рейтинг: 0 / 0
Помогите с запросом
    #39741224
BuryCommoner
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Vadim Lejnin, спасибо за совет. Вариант с select from dual union находил, но решил поискать что-нибудь покомпактнее (чтоб меньше действий делать при предобработке текста)
...
Рейтинг: 0 / 0
Помогите с запросом
    #39741232
Фотография --Eugene--
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BuryCommonerЭто то, что нужнопопробую немного не согласиться.
зацените:
Код: plsql
1.
2.
with q as (select column_value id from table(sys.odcivarchar2list('id1', 'id2', 'id3')))
select * from q where not exists(select 1 from table1 t where t.id = q.id)
...
Рейтинг: 0 / 0
Помогите с запросом
    #39741233
Фотография andrey_anonymous
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BuryCommonerзавтра попробую с компа.
Попробуйте.
Но тут есть лимит - как найдете, обязательно отпишитесь в теме.
...
Рейтинг: 0 / 0
Помогите с запросом
    #39741234
Фотография andrey_anonymous
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
--Eugene--зацените:
Что именно предлагается "заценить"?
...
Рейтинг: 0 / 0
Помогите с запросом
    #39741239
Фотография --Eugene--
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
andrey_anonymous,

ну (я думаю) у него по TABLE1.ID имеется индекс, который будет задействован во втором случае, а в первом (возможно) нет.
ошибаюсь?
...
Рейтинг: 0 / 0
Помогите с запросом
    #39741241
Фотография -2-
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
--Eugene--ну (я думаю) у него по TABLE1.ID имеется индекс, который будет задействован во втором случае, а в первом (возможно) нет.
ошибаюсь?Если поле not null, на что намекает именование, то без разницы.
...
Рейтинг: 0 / 0
Помогите с запросом
    #39741245
Фотография andrey_anonymous
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
--Eugene--ну (я думаю) у него по TABLE1.ID имеется индекс, который будет задействован во втором случае, а в первом (возможно) нет.
ошибаюсь?
Как решит CBO - так и будет. И та, и другая логическая конструкция могут реализовываться оптимизатором и как анти-соединение, и как фильтр.
Другой вопрос, что это не эквивалентные конструкции.
...
Рейтинг: 0 / 0
Помогите с запросом
    #39741249
Фотография andrey_anonymous
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
-2-Если поле not null
Ну блин, ведь всю интригу поломал... :)
...
Рейтинг: 0 / 0
Помогите с запросом
    #39741251
Фотография --Eugene--
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BuryCommoner,
andrey_anonymousвсю интригу поломал... :)вот и спрашивай их о чем-то)
...
Рейтинг: 0 / 0
14 сообщений из 14, страница 1 из 1
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Помогите с запросом
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]