Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Помогите с запросом / 14 сообщений из 14, страница 1 из 1
30.11.2018, 17:24
    #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
30.11.2018, 17:36
    #39741170
-2-
-2-
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите с запросом
BuryCommonerтекстовик со списком ключейЕсли строка до 4000 байт, instr. Если больше, то union. Если файл доступен на сервере, внешняя таблица.
...
Рейтинг: 0 / 0
30.11.2018, 17:39
    #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
30.11.2018, 17:41
    #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
30.11.2018, 18:37
    #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
30.11.2018, 18:39
    #39741224
BuryCommoner
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите с запросом
Vadim Lejnin, спасибо за совет. Вариант с select from dual union находил, но решил поискать что-нибудь покомпактнее (чтоб меньше действий делать при предобработке текста)
...
Рейтинг: 0 / 0
30.11.2018, 18:50
    #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
30.11.2018, 18:51
    #39741233
andrey_anonymous
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите с запросом
BuryCommonerзавтра попробую с компа.
Попробуйте.
Но тут есть лимит - как найдете, обязательно отпишитесь в теме.
...
Рейтинг: 0 / 0
30.11.2018, 18:52
    #39741234
andrey_anonymous
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите с запросом
--Eugene--зацените:
Что именно предлагается "заценить"?
...
Рейтинг: 0 / 0
30.11.2018, 19:00
    #39741239
--Eugene--
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите с запросом
andrey_anonymous,

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


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