Сделать отчет из 3 разных таблиц, используя MAX и COUNT?

У меня есть база данных с пациентами, врачами, кабинетами и посещениями.

Пациенты (id_pac, Имя, Фамилия)

Врачи (id_med, Имя, Фамилия, Специальность)

Шкафы (id_cab, название)

Визиты (id_viz, Date_viz, Medic_id, Patient_id, Cabinet_id)

Один врач может посещать разных пациентов, разные кабинеты, в разные даты.

Мне нужно выяснить (с подзапросом или с соединением?, но НЕ с промежуточными таблицами или представлениями), в одном отчете:

  1. один столбец с полным именем врача: CONCAT(FirstName,' ',LastName) (DISTINCT),
  2. один столбец с названием кабинета, в котором у врача было наибольшее количество посещений и 3.один столбец с количеством посещений для этого кабинета.

Я пытался выяснить, как я могу получить эту информацию, но все, что у меня есть, это список врачей с указанием всех кабинетов, в которых он был на приеме, с общим количеством посещений / кабинет :((


person mgm    schedule 01.12.2011    source источник


Ответы (2)


Я пытался лучше понять этот подзапрос и нашел другой способ (я думаю, простой). Код:

SELECT
CONCAT(me.Nume,' ',me.Prenume) AS Medic,
x.Denumire,
MAX(x.nrviz) AS maxviz
FROM (
        SELECT DISTINCT
            v.Medic_id,
            c.Denumire,
            COUNT(v.id_viz) AS nrviz
        FROM
            vizite v
        LEFT JOIN
            cabinete c
        ON(v.Cabinet_id=c.id_cab)
        GROUP BY
            v.Medic_id,
            v.Cabinet_id
        ORDER BY
            nrviz DESC) as x
LEFT JOIN
 medici me
ON (x.Medic_id=me.id_med)
LEFT JOIN
 cabinete ca
ON (x.Denumire=ca.Denumire)
GROUP BY
Medic
ORDER BY
    Medic,  
    maxviz DESC

@ypercube: Пожалуйста, дайте мне знать, если вы видите некоторые различия, потому что важно видеть, не забыл ли я что-то или упустил.

person mgm    schedule 17.12.2011

person    schedule
comment
Уау, это именно то, что мне нужно. Я не думаю, что были какие-то шансы найти этот запрос самостоятельно. Я также дам вам «щелчок» за ваше потенциальное космическое путешествие :) Спасибо. - person mgm; 02.12.2011
comment
@GabrielMandu: Спасибо. Вы также можете отметить этот ответ, если он был полезен. - person ypercubeᵀᴹ; 02.12.2011
comment
: Я опубликовал свой вариант для этого подзапроса. Пожалуйста, дайте мне знать, если вы видите некоторые различия, потому что важно видеть, не забыл ли я что-то или упустил. - person mgm; 17.12.2011