Передача значения параметра для лайка - PullRequest
0 голосов
/ 31 августа 2018
create table ter (
  ID number, 
  category varchar2(250 byte),
  name varchar2(250 byte)
); 

insert into ter values (1, 'amd-visual theraphy','john');
insert into ter values (1, 'amd-visual theraphy','mike');
insert into ter values (2, 'amd-autmatic theraphy','mike');
insert into ter values (3, 'amd-autmatic theraphy','drane');
insert into ter values (3, 'cmd autmatic theraphy', 'traverse');
insert into ter values (3, 'amd-dramatic theraphy','drane');
insert into ter values (3, 'cmd-dropertic theraphy', 'traverse');
insert into ter values (5,'qwd-dropertic visual-theraphy','drones');
insert into ter values (5,'qwd-aromatic-theraphy','drones');
insert into ter values (3, 'other', 'traverse');
insert into ter values (3, 'other', 'traverse');

1: & категория пуста показать все записи

2: & категория не равна нулю, и если я введу категорию = визуально, автоматически, то отобразится соответственно

3 & категория не равна нулю, и если я введу категорию = драматический, он должен отображать драматический и дропертный режим, игнорируя другие результаты;

как драматическое и неряшливое является требованием, когда пользователь хочет видеть и игнорирует, если частичное значение совпадает с визуальным и автоматическим, содержит

как получить этот результат это то, что дал мне решение, но все же я хочу игнорировать визуальное, содержащее дропетику

   select *
    from   ter t cross join (select '&category' as my_categ from dual) m
 where  m.my_categ is null
or  m.my_categ in ('visual', 'autmatic', 'dramtic') and t.category like '%' 
 || m.my_categ || '%'
 or  m.my_categ = 'dramtic' and t.category like '%dropertic%' ;

1 Ответ

0 голосов
/ 31 августа 2018

Я бы немного изменил вашу модель данных. Вместо сохранения категорий в виде строки, разделенной пробелами, лучше переместить их в отдельную таблицу.

create table category(
  ter_id number,
  name varchar(250 bytes)
);

, где ter_id совпадает с ID в столбце ter.

Эта таблица должна содержать записи типа:

insert into category values (1, 'amd-visual');
insert into category values (1, 'therapy');
-- etc.

Под вашим запросом подразумевается что-то вроде:

select t.*, c.* 
from ter t, category c
where t.id = c.ter_id
  and category in ('therapy', 'visual');
  -- etc...

Если вам действительно нужно удовлетворять критериям:

если категория пуста, показать все записи

это легко реализовать, просто добавив запись с пустой категорией name в таблицу category:

insert into category values (1, null);
insert into category values (2, null);

- и т. Д.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...