Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/216.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 同一表格中问题多对多关系的扩展_Sql_Mysql - Fatal编程技术网

Sql 同一表格中问题多对多关系的扩展

Sql 同一表格中问题多对多关系的扩展,sql,mysql,Sql,Mysql,我有一个表,它包含4个字段 Id|Hospital| Doctor|patient 1 A D1 P11 2 B D6 P61 3 A D2 P21 4 A D1 P12 5 B D7 P71 6 B D6 P62 7 B D6 P63 医生是这家医院所独有

我有一个表,它包含4个字段

Id|Hospital| Doctor|patient 1 A D1 P11 2 B D6 P61 3 A D2 P21 4 A D1 P12 5 B D7 P71 6 B D6 P62 7 B D6 P63 医生是这家医院所独有的。他们不在其他医院工作。患者是医生所独有的,他们不去看任何其他医生。每家医院都有多名医生

如果您观察到每个医生都有多个患者

现在的问题是:我如何才能让每个医生只与一名患者相关。它可以是记录中的任何患者

我期待着看到这样的事情

Hospital Doctor Patient A D1 P11 A D2 P21 B D6 P61 B D7 P71 我得到的答案是 从表组中按医院、医嘱、医生选择医院、医生、maxpatient

如何从上表中获得唯一的id,如

id Hospital Doctor Patient 1 A D1 P11 3 A D2 P21 2 B D6 P61 5 B D7 P71 我很抱歉再次提出这个问题。

尝试以下方法:

select Id,Hospital,Doctor,Patient
  from table
  where Id in (select max(t.Id) from table t group by t.Hospital,t.Doctor)
  order by Hospital,Doctor;
SELECT H.Id, H.Hospital, D.Doctor, Max(P.Patient)
FROM Hospitals H
INNER JOIN Doctors D ON H.Hospital = D.Hospital
INNER JOIN Patients P ON D.Doctor = P.Doctor
ORDER BY Hospital, Doctor
尝试以下方法:

select Id,Hospital,Doctor,Patient
  from table
  where Id in (select max(t.Id) from table t group by t.Hospital,t.Doctor)
  order by Hospital,Doctor;
SELECT H.Id, H.Hospital, D.Doctor, Max(P.Patient)
FROM Hospitals H
INNER JOIN Doctors D ON H.Hospital = D.Hospital
INNER JOIN Patients P ON D.Doctor = P.Doctor
ORDER BY Hospital, Doctor

您可以将内容分为三个表:具有主键id的医院、医院字段、具有其他PK的医生、医院的外键以及具有其他PK的医生字段和患者、医生的外键和患者字段。那么您的声明将类似于:

select Id,Hospital,Doctor,Patient
  from table
  where Id in (select max(t.Id) from table t group by t.Hospital,t.Doctor)
  order by Hospital,Doctor;
SELECT H.Id, H.Hospital, D.Doctor, Max(P.Patient)
FROM Hospitals H
INNER JOIN Doctors D ON H.Hospital = D.Hospital
INNER JOIN Patients P ON D.Doctor = P.Doctor
ORDER BY Hospital, Doctor

您可以将内容分为三个表:具有主键id的医院、医院字段、具有其他PK的医生、医院的外键以及具有其他PK的医生字段和患者、医生的外键和患者字段。那么您的声明将类似于:

select Id,Hospital,Doctor,Patient
  from table
  where Id in (select max(t.Id) from table t group by t.Hospital,t.Doctor)
  order by Hospital,Doctor;
SELECT H.Id, H.Hospital, D.Doctor, Max(P.Patient)
FROM Hospitals H
INNER JOIN Doctors D ON H.Hospital = D.Hospital
INNER JOIN Patients P ON D.Doctor = P.Doctor
ORDER BY Hospital, Doctor

上一个问题了解更多信息:上一个问题了解更多信息:我无法控制表格。好的,那么您必须使用其他答案。我无法控制表格。好的,然后您必须使用其他答案。此脚本表示,在mytable mi中的SELECT SELECT id处缺少右偏执狂,其中mi.hospital=md.hospital和mi.doctor=md.doctor LIMIT 1作为第一个患者此脚本表示右偏侧缺失,请从mytable mi中选择id,其中mi.hospital=md.hospital和mi.doctor=md.doctor LIMIT 1作为第一位患者您的答案准确、简短。谢谢您的答案准确、简短简短,谢谢