English 中文(简体)
同一张表中的问题多对多关系扩展。
原标题:
  • 时间:2009-03-13 17:22:49
  •  标签:

我有一张单独的表格,它包含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

I got the answer like select Hospital,doctor, max(patient) from table GROUP BY Hospital,Doctor ORDER BY Hospital,Doctor;

如何获取以上表格中唯一的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  m.*
FROM    (
        SELECT  (
                SELECT  id
                FROM    mytable mi
                WHERE   mi.hospital = md.hospital
                        AND mi.doctor = md.doctor
                LIMIT 1
                ) AS first_patient
        FROM    (
                SELECT  DISTINCT hospital, doctor
                FROM    mytable
                ) md
        ) mo, mytable m
WHERE   m.id = mo.first_patient

你可以考虑将事物分成三个表:医院(具有主键id和医院字段)、医生(具有其他主键、Hospitals的外键和医生字段)和患者(具有其他主键、Doctors的外键和患者字段)。然后你的语句会像这样:

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




相关问题
热门标签