我目前正在努力解决这个问题。我被要求弄清楚哪个医生没有治疗过 #3249 号病人。我已经想出了如何达到可以只为没有治疗患者的医生拉取医生 ID 的地步。我的问题是,当我尝试从不同的表中提取医生的姓名时,不仅医师_id 重复,而且医生的姓名也被其他医生的姓名替换。
这是我创建和链接表的方式:
CREATE TABLE pt_treatment ( patient_no NUMBER(4), physician_id NUMBER(4), item_code NUMBER(3), num_times_serviced NUMBER(3),
CONSTRAINT pt_treatment_pk PRIMARY KEY (patient_no, physician_id, item_code),
CONSTRAINT pt_treatement_patient_no_fk FOREIGN KEY (patient_no) REFERENCES patient (patient_no),
CONSTRAINT pt_treatment_physician_id_fk FOREIGN KEY (physician_id) REFERENCES doctor (physician_id),
CONSTRAINT pt_treatment_item_code_fk FOREIGN KEY (item_code) REFERENCES item (item_code));
和医生桌
CREATE TABLE doctor (
physician_id NUMBER(4),
doctor_name VARCHAR2(30),
doctor_phone VARCHAR2(12),
CONSTRAINT doctor_physician_id_PK PRIMARY KEY (physician_id))
;
这是我选择数据的声明:
SELECT distinct pt.physician_id, d.doctor_name
FROM pt_treatment pt, doctor d
WHERE pt.physician_id NOT IN (select physician_id FROM pt_treatment WHERE patient_no = 3249);
这显示了我在 mySQL 中的输出:在此处输入图像描述第一部分显示了我的医生表以及两个医生如何排列不同的 ID 第二部分显示了 pt_treatment 表输出;请注意,与患者编号 3249 对齐的唯一医师_id 是 4321。最后,最后一位显示了我的输出以及医师_id 如何用两个医生的名字打印两次。
提前致谢!
这个怎么样?
SELECT distinct d.physician_id, d.doctor_name, pt.patient_no
FROM doctor d
LEFT JOIN pt_treatment pt ON d.physician_id = pt.physician_id and pt.patient_no=3249
WHERE pt.patient_no IS NULL
/*THE doctors who have not treated patient 3249 will have patient_id null*/
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句