进行 plsql 比较

making a plsql comparison

我是 relativity 的新手 sql,需要一些帮助。

我有一个名为 TREATMENT 的 table,它有 2 个字段:

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

所以我需要 PL/SQL 从用户那里获取一个值 T_ID 并且程序将输出碰撞处理。

提前致谢

这是我的 table:

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;

例如,我想限制 "yoga" 和 "dermatology" 一起服用,因为它们会产生类似的副作用。用户输入 T009 和系统回复...瑜伽不应与皮肤科一起使用。会引起头痛

这是一个数据建模问题。您需要另一个 table 来持有禁用组合。例如

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

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

您的程序应该查找此 table。

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

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