Использование внутреннего соединения для получения данных столбца из нескольких таблиц - PullRequest
0 голосов
/ 11 мая 2018

У меня проблемы с выполнением запроса.Я пытаюсь объединить 3 таблицы, чтобы отобразить 10 лучших лекарств по количеству назначений в течение одного года.

Когда я запускаю его как есть, я получаю сообщение об ошибке о том, что что-то не так в агрегате или в Select.

Это мой запрос:

 Select Count(MED_ID), MEDICATIONS.MEDICATION_NAME, ENCOUNTER.OBSDATE 
 From MEDICATIONS
 Inner JOIN ENC_MEDICATIONS On ENC_MEDICATIONS.MED_ID = MEDICATIONS.MED_ID
 Inner JOIN ENCOUNTER On ENC_MEDICATIONS.ENC_ID = ENCOUNTER.ENC_ID
 WHERE OBSDATE Between '01/01/2011' And '12/31/2011'
 GROUP BY (MEDICATION_NAME)
 ORDER BY COUNT(MED_ID) DESC 

Тогда это моя модель стола: enter image description here

Где я ошибаюсь в соединенияхчтобы получить результат, который я пытаюсь отобразить.

Спасибо!- Энн

Ответы [ 2 ]

0 голосов
/ 11 мая 2018

Я полагаю, что вы ищете:

select Count(MED_ID), m.MEDICATION_NAME
from MEDICATIONS m Inner join
     ENC_MEDICATIONS em
     on em.MED_ID = m.MED_ID Inner JOIN
     ENCOUNTER e
     on em.ENC_ID = e.ENC_ID
where e.OBSDATE Between '2011-01-01' and '2011-12-31'
group by m.MEDICATION_NAME
order by COUNT(MED_ID) DESC 
limit 10;

Примечания:

  • OBSDATE не имеет смысла в SELECT, учитывая то, что вы хотите сделать.
  • Форматы даты должны использовать стандарты ISO / ANSI.ГГГГ-ММ-ДД является наиболее читаемым таким форматом.
  • Используйте псевдонимы таблиц!
  • Квалифицируйте все имена столбцов!
0 голосов
/ 11 мая 2018

По общему признанию, не проверяя это, вам нужно добавить группу по второму неагрегату:

 Select MEDICATIONS.MEDICATION_NAME, ENCOUNTER.OBSDATE, Count(enc_medications.MED_ID)
     From MEDICATIONS
     Inner JOIN ENC_MEDICATIONS On ENC_MEDICATIONS.MED_ID = MEDICATIONS.MED_ID
     Inner JOIN ENCOUNTER On ENC_MEDICATIONS.ENC_ID = ENCOUNTER.ENC_ID
     WHERE OBSDATE Between '01/01/2011' And '12/31/2011'
     GROUP BY medications.MEDICATION_NAME, encounter.obsdate
     ORDER BY COUNT(enc_medications.MED_ID) DESC;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...