我是sql的相对论,需要一些帮助。
我有一个名为TREATMENT的表,它有两个字段:
其中一些治疗方法不应与其他治疗方法一起使用。例如..如果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和系统回复...瑜伽不应该用皮肤科。会引起头痛
答案 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');