进行plsql比较

时间:2015-03-22 15:52:42

标签: sql plsql oracle11g

我是sql的相对论,需要一些帮助。

我有一个名为TREATMENT的表,它有两个字段:

  • T_ID(主键)
  • T_NAME。

其中一些治疗方法不应与其他治疗方法一起使用。例如..如果T_ID =' T001'与T_ID =' T002'一起使用它会引起严重的头痛。我想为他们中的一些人做这件事。

所以我需要PL / SQL从用户那里获取一个值,T_ID和程序将输出相应的处理。

提前致谢

这是我的表:

DROP TABLE TREATMENT CASCADE CONSTRAINTS;
CREATE TABLE TREATMENT(
T_ID VARCHAR2(5) PRIMARY KEY NOT NULL,
T_NAME VARCHAR2(15));

INSERT INTO TREATMENT VALUES
('T001','ACCUPUNCTURE');

INSERT INTO TREATMENT VALUES
('T002','MASSAGE');

INSERT INTO TREATMENT VALUES
('T003','SKIN CARE');

INSERT INTO TREATMENT VALUES
('T004','OSTEOPATHY');

INSERT INTO TREATMENT VALUES
('T005','HOMOEOPATHY');

INSERT INTO TREATMENT VALUES
('T006','PHYSIOTHERAPY');

INSERT INTO TREATMENT VALUES
('T007','PSYCHOLOGY');

INSERT INTO TREATMENT VALUES
('T008','DEMATOLOGY');

INSERT INTO TREATMENT VALUES
('T009','YOGA');

commit;

我想要举例来限制"瑜伽"和"皮肤科"从而被带到一起,因为他们会有副作用,如。用户输入T009和系统回复...瑜伽不应该用皮肤科。会引起头痛

1 个答案:

答案 0 :(得分:0)

这是一个数据建模问题。您需要另一个表来保存禁用的组合。例如

create table contraindication
   ( treatment1 VARCHAR2(5) 
     , treatment2 VARCHAR2(5)
     , primary key ci_pk (treatment1, treatment2) );

insert into contraindication values ('T008', 'T009');

您的程序应查找此表。

您可能会发现插入两个排列很有帮助,因为这会使查询更简单(如果列表变大则效率更高):

insert into contraindication values ('T009', 'T008');