powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Прошу помочь с запросом
8 сообщений из 8, страница 1 из 1
Прошу помочь с запросом
    #39381974
maxwait
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Опишу суть
есть как всегда две таблицы
что досталось с тем и работаю как говориться...
в одной table1 хранятся имена файлов (namefile) пример qwe_123.txt имя загруженного файла в БД
Во второй table2 Сессия когда этот файл был загружен (nameSes) и в ней храниться чуть другая запись Файл qwe_123.txt
Идентификаторов нет, как можно было бы связать записи.
одно лишь приходит в голову парсить по именам
Что-то подобное думаю но как сделать like в условии where

with fName
(
/* получаю наименование файла 123*/
select SUBSTR(Namefile, 5, INSTR(Namefile, '.',1,1)-5) from table1 where trunc(data)='19.10.2016'
)

select * from ses where CSESNAME like '%fName%' and DateSes='19.10.2016'

Заранее спасибо
...
Рейтинг: 0 / 0
Прошу помочь с запросом
    #39381978
maxwait,

использовать конкатенацию ( like '%' || fName || '%' )
или заменить like на instr
...
Рейтинг: 0 / 0
Прошу помочь с запросом
    #39381989
maxwait
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Добрый Э - Эх,

можешь подсказать с синтаксисом что не так у мня?

with fName AS
(
select SUBSTR(Namefile, 5, INSTR(Namefile, '.',1,1)-5) nn from table1 where trunc(data)='19.10.2016'
)
--select nn from fName --так выводит все "ок"
select 1 from table2 where SESNAME like '%'||fName||'%' and DDSESDT ='19.10.2016' -- fName : invalid identifier

INSTR не получиться применить т.к. имена в table2 могут быть совершенно иными и только номер может быть уникальным как в середине имени так и в начале или конце. думаю like тут больше подходит, но как его правильно применить...
...
Рейтинг: 0 / 0
Прошу помочь с запросом
    #39382000
maxwait,

приведи тестовые данные в виде WITH t1 as(), t2 as... с парой-тройкой строк на каждую таблицу.
а то не совсем понятно, что у тебя есть и чего ты в итоге хочешь получить
...
Рейтинг: 0 / 0
Прошу помочь с запросом
    #39382001
maxwait
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Добрый Э - Эх,

Вроде сделал
сейчас проверяю конечно
запрос такой

select * from ses
where exists (select 1 nn from umb_payfile p where ses.csesname like '%'||SUBSTR(Namefile, 5, INSTR(Namefile, '.',1,1)-5)||'%' )
...
Рейтинг: 0 / 0
Прошу помочь с запросом
    #39382004
maxwait
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
в table1 поля fName date
qwe_123.txt 11.01.2017
qwe_124.txt 11.01.2017
qwe_125.txt 11.01.2017
qwe_126.txt 11.01.2017

запросом
select SUBSTR(Namefile, 5, INSTR(Namefile, '.',1,1)-5) nn from umb_payfile where trunc(data)='11.01.2017'
получаю имена файлов
123
124
125
126
и надо сравнить с именами второй таблицы, причем имена в table2 имеют другой вид
table2
sesname date
asdvqwe_123.txt
sdfg_124sadf.txt
125_dfg.txt
sdfg126dfg.txt

для начала нужно сопоставить, а дальше я уже под свои нужны с проверками запилю.
...
Рейтинг: 0 / 0
Прошу помочь с запросом
    #39382013
dmdmdm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вот так принято давать test case.

Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
with t as 
(select 'qwe_123.txt' name, to_date('11.01.2017', 'dd.mm.yyyy') date1 from dual union all
 select 'qwe_124.txt' name, to_date('12.01.2017', 'dd.mm.yyyy') date1 from dual union all
 select 'qwe_125.txt' name, to_date('13.01.2017', 'dd.mm.yyyy') date1 from dual union all
 select 'qwe_127.txt' name, to_date('20.01.2017', 'dd.mm.yyyy') date1 from dual
),
n as
(
select 'sesname' namefile from dual union all
select 'asdvqwe_123.txt' namefile from dual union all
select 'sdfg_124sadf.txt' namefile from dual union all
select '125_dfg.txt' namefile from dual union all
select 'sdfg126dfg.txt' namefile from dual
)
      
select t.*, n.namefile from t, n
where t.name like '%'||SUBSTR(n.Namefile, 5, INSTR(n.Namefile, '.',1,1)-5)||'%' 



В like можно подставить функцию, которая прозрачно работает, а не зубодробительные вложенные instr-substr.
...
Рейтинг: 0 / 0
Прошу помочь с запросом
    #39382553
Mishka999
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
with t as
(select 'qwe_123.txt' name, to_date('11.01.2017', 'dd.mm.yyyy') date1 from dual union all
select 'qwe_124.txt' name, to_date('12.01.2017', 'dd.mm.yyyy') date1 from dual union all
select 'qwe_125.txt' name, to_date('13.01.2017', 'dd.mm.yyyy') date1 from dual union all
select 'qwe_127.txt' name, to_date('20.01.2017', 'dd.mm.yyyy') date1 from dual
),
n as
(
select 'sesname' namefile from dual union all
select 'asdvqwe_123.txt' namefile from dual union all
select 'sdfg_124sadf.txt' namefile from dual union all
select '125_dfg.txt' namefile from dual union all
select 'sdfg126dfg.txt' namefile from dual
)

select t.*, n.*
from t
JOIN n ON REPLACE(TRANSLATE(n.namefile, 'qwertyuiopasdfghjklzxcvbnm_.', RPAD('@', 28,'@' )),'@','') =
REPLACE(TRANSLATE(t.name, 'qwertyuiopasdfghjklzxcvbnm_.', RPAD('@', 28,'@' )),'@','')


i mozno opredelit index
...
Рейтинг: 0 / 0
8 сообщений из 8, страница 1 из 1
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Прошу помочь с запросом
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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