-3

我有 2 个表,表 1)医生 - 具有以下属性:

  • id(主键)
  • 名称
  • 名字
  • 电话
  • 蜂鸣器

表 2) 患者 - 属性为

  • id(主键)
  • 医生$id(来自医生表id的外键)
  • 名称
  • 名字
  • 街道
  • 城市
  • 状态
  • 压缩
  • 电话

我的问题是如何“列出所有没有分配任何患者的医生的身份证、号码、名字和姓氏。按医生姓氏的顺序排列。

4

2 回答 2

1

LEFT JOINNOT IN谓词一起使用:

SELECT 
  d.fname, 
  d.lname
FROM Doctor AS d
LEFT JOIN patient AS p ON d.id = p.doctor_id
WHERE p.docutor_id IS NULL
ORDER BY d.lname;

或者:谓词,但是来自表中NOT IN的值是不安全的,这就是我向表中添加谓词的原因:NULLdoctor_idpatientNOT NULLpatient

SELECT 
  d.fname, 
  d.lname
FROM Doctor AS d
WHERE id NOT IN(SELECT doctor_id
                FROM patient
                WHERE docutor_id IS NOT NULL)
ORDER BY d.lname;
于 2013-04-08T07:05:26.367 回答
0

使用not exists

 select id, fname, lname 
 from Doctor d 
 where not exists (select 1 from Patient where doctorId = d.id)
于 2013-04-08T07:08:55.267 回答