powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Помогите с запросом! Поиск количества вхождений в строку для каждого значения таблицы
12 сообщений из 12, страница 1 из 1
Помогите с запросом! Поиск количества вхождений в строку для каждого значения таблицы
    #39670096
student18
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Товарищи, помогите пожалуйста! Мне кажется всё просто, но почему-то не могу..

Необходимо найти количество вхождений (p.combination_value) в (e.phone_number) для каждого значения (p.combination_value).
В employess будет 20т. записей
в combination будет 600 записей

Код: plsql
1.
2.
3.
4.
SELECT c.id, COUNT(e.emp_id) 
  FROM employess e, combination c 
 WHERE e.phone_number LIKE '%' || p.combination_value || '%' 
 GROUP BY c.id;


В таком случае получается декартово произведение, т.к. таблички не связаны. Как это можно красиво обыграть?

Или всё-таки необходимо писать на PL/SQL, что-то вроде такого? но тогда очень долго бегает ..
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
BEGIN
FOR c IN (SELECT row_number() over(ORDER BY combination_value) i, combination_value FROM combination) 
    LOOP
      UPDATE test_table
         SET cnt = (SELECT COUNT(e.emp_id) FROM employess e WHERE e.phone_number LIKE '%' || c.combination_value || '%' )
       WHERE ind = c.i 
    END LOOP;
END;
...
Рейтинг: 0 / 0
Помогите с запросом! Поиск количества вхождений в строку для каждого значения таблицы
    #39670098
SQL*Plus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
student18Необходимо найти количество вхождений (p.combination_value) в (e.phone_number) для каждого значения (p.combination_value).
В employess будет 20т. записей
в combination будет 600 записей
Код: plsql
1.
2.
3.
4.
SELECT c.id, COUNT(e.emp_id) 
  FROM employess e, combination c 
 WHERE e.phone_number LIKE '%' || p.combination_value || '%' 
 GROUP BY c.id;


В таком случае получается декартово произведение, т.к. таблички не связаны. Как это можно красиво обыграть?
Разве это не условие соединения?

Кроме того, декактово произведение - это не абсолютное зло... :-)
...
Рейтинг: 0 / 0
Помогите с запросом! Поиск количества вхождений в строку для каждого значения таблицы
    #39670102
student18
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
SQL*Plus, ну это опечатался случайно) И пример специально тестовый, чтобы не нагружать большим обьемом. Просто получается очень
долгий запрос, хотя COST незначительная
...
Рейтинг: 0 / 0
Помогите с запросом! Поиск количества вхождений в строку для каждого значения таблицы
    #39670106
Dshedoo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
student18,

combination_value = '22' какой count должен дать на phone_number = '222'?
...
Рейтинг: 0 / 0
Помогите с запросом! Поиск количества вхождений в строку для каждого значения таблицы
    #39670107
student18
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Dshedoo,
нужно посчитать сколько emp_id подходят для текущего шаблона.
...
Рейтинг: 0 / 0
Помогите с запросом! Поиск количества вхождений в строку для каждого значения таблицы
    #39670113
MaximaXXL
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
student18,

Если делать на вхождении LIKE '%' || p.combination_value || '%', а не с начала например LIKE p.combination_value || '%', то прям быстрым тяжело сделать

аналог like '%'|| p.combination_value || '%' может быть instr(e.phone_number,p.combination_value) >0 - но тоже думаю не самая быстрая операция

Можно попробовать наложить пред обработку на e.phone_number что бы вывести на = или хотя бы LIKE p.combination_value || '%'
...
Рейтинг: 0 / 0
Помогите с запросом! Поиск количества вхождений в строку для каждого значения таблицы
    #39670117
MaximaXXL
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
student18Dshedoo,
нужно посчитать сколько emp_id подходят для текущего шаблона.

шаблона - ?

combination_value может быть null ?
...
Рейтинг: 0 / 0
Помогите с запросом! Поиск количества вхождений в строку для каждого значения таблицы
    #39670122
student18
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
MaximaXXL, спасибо)
как и говорил тут тестовые скрипты. А так "phone_number" (фактически это конечно другое поле) вообще CLOB =))
...
Рейтинг: 0 / 0
Помогите с запросом! Поиск количества вхождений в строку для каждого значения таблицы
    #39670127
student18
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
MaximaXXL,

шаблона - ? - e.phone_number LIKE '%' || p.combination_value || '%' , ну это имелось ввиду)


combination_value может быть null ? - нет
...
Рейтинг: 0 / 0
Помогите с запросом! Поиск количества вхождений в строку для каждого значения таблицы
    #39670168
SQL*Plus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
student18SQL*Plus, ну это опечатался случайно)
И пример специально тестовый, чтобы не нагружать большим обьемом.
Просто получается очень долгий запрос , хотя COST незначительная
Ничего удивительного.
Такое условие обрабатывается методом NESTED LOOPS, я думаю.

Взяли первый e.phone_number и "примерили" к нему ВСЕ c.combination_value - 600 штук.
Взяли второй e.phone_number и "примерили" к нему ВСЕ c.combination_value - 600 штук.
Взяли третий e.phone_number и "примерили" к нему ВСЕ c.combination_value - 600 штук.
...
Взяли 20000-й e.phone_number и "примерили" к нему ВСЕ c.combination_value - 600 штук.

Итого выполнили 12 000 000 "примерок".
Это не мгновенно делается.
...
Рейтинг: 0 / 0
Помогите с запросом! Поиск количества вхождений в строку для каждого значения таблицы
    #39670593
student18
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
SQL*Plus, всем спасибо!

Вообщем, может кому будет интересно или полезно, меня буквально выручил
dbms_lob.instr
Поиск по CLOB значительно быстрее. Получил результат в 5 раз быстрее.
...
Рейтинг: 0 / 0
Помогите с запросом! Поиск количества вхождений в строку для каждого значения таблицы
    #39670650
123йй
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
student18Вообщем, может кому будет интересно или полезно
Вряд ли. Обычный instr
...
Рейтинг: 0 / 0
12 сообщений из 12, страница 1 из 1
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Помогите с запросом! Поиск количества вхождений в строку для каждого значения таблицы
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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