Расширение вопроса много ко многим отношениям в одной таблице - PullRequest
1 голос
/ 13 марта 2009

Я получил одну таблицу, и она содержит 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

Я получил ответ как выберите больницу, врач, макс. (пациент) из таблицы.

Как также получить идентификатор, который является уникальным из приведенной выше таблицы, как.

id Hospital Doctor Patient
 1   A       D1      P11

 3   A       D2      P21

 2   B       D6      P61

 5   B       D7      P71

Мне очень жаль повторять этот вопрос.

Ответы [ 3 ]

1 голос
/ 13 марта 2009

Попробуйте что-то вроде:

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;
0 голосов
/ 13 марта 2009

Вы можете посмотреть, как разбить вещи на три таблицы: больницы (с идентификатором первичного ключа и полем больницы), доктора (с другим ПК, внешний ключ больницы и поле доктора) и пациенты (с другим ПК, внешний ключ врачей и поле пациента). Тогда ваше заявление будет выглядеть примерно так:

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
0 голосов
/ 13 марта 2009
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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...