Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Oracle Новый топик    Ответить
 Помогите с запросом  [new]
-=Pino=-
Member

Откуда:
Сообщений: 30
Есть несколько ключевых слов для поиска, например три (не суть).
Делаю запрос, чтобы выберал записи в которых встречаются как все три слова, а ткаже записи в которых есть и два слова и даже одно.
Проблема в том, как отсортировать результаты поска так, чтобы сначала шли записи в которых три ключевых слова, потом по два, ну и последними где встречаются тока одно слово.
19 фев 07, 16:23    [3806117]     Ответить | Цитировать Сообщить модератору
 Re: Помогите с запросом  [new]
Elic
Member

Откуда:
Сообщений: 29976
select ... from
    (select ..., sign(instr(s, :w1)) + ... + sign(instr(s, :wN)) as w_cnt from ...)
  where w_cnt > 0 
  order by w_cnt desc
19 фев 07, 16:29    [3806163]     Ответить | Цитировать Сообщить модератору
 Re: Помогите с запросом  [new]
dmidek
Member

Откуда: Киев - Дортмунд
Сообщений: 116085
В лоб

SQL> 
SQL> with tab1
  2  as
  3  (select 'Mama myla ramu i okno' col1 from dual
  4  union all
  5  select 'Mama vytirala ramu i okno' from dual
  6  union all
  7  select 'Mama ' from dual
  8  )
  9  select * from tab1
 10  where INSTR(col1, 'Mama') != 0 OR INSTR(col1,'myla') != 0 OR INSTR(col1, 'ramu') != 0
 11  order by decode(INSTR(col1, 'Mama') , 0, 0, 1) +
 12           decode(INSTR(col1, 'myla') , 0, 0, 1) +
 13           decode(INSTR(col1, 'ramu') , 0, 0, 1) desc
 14  /

COL1
-------------------------
Mama myla ramu i okno
Mama vytirala ramu i okno
Mama

SQL> 
19 фев 07, 16:31    [3806183]     Ответить | Цитировать Сообщить модератору
Все форумы / Oracle Ответить