Форум программистов
 
О проблемах, например, с регистрацией пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail, а тут можно восстановить пароль.

Вернуться   Форум программистов > Microsoft Office и VBA > Microsoft Office Access
Регистрация

Восстановить пароль
Повторная активизация e-mail


Ответ
 
Опции темы
Старый 03.05.2012, 15:21   #1
Uh-Oh
Пользователь
 
Регистрация: 24.09.2011
Сообщений: 12
По умолчанию Проблема с запросом

В базе 3 таблицы: Врачи, Пациенты и Обращения (вторых к первым).
Хотелось бы сделать запрос, выводящий фамилию пациента, который обращается чаще всех. Вот такой запрос:
Код:
SELECT Пациенты.Фамилия, count(Обращения.Код) AS [Количество обращений]
FROM Пациенты INNER JOIN Обращения ON Пациенты.Код = Обращения.Пациент
GROUP BY Пациенты.Фамилия
HAVING count(Обращения.Код)> ANY
(SELECT count(Обращения.Код)
FROM Пациенты INNER JOIN Обращения ON Пациенты.Код = Обращения.Пациент 
GROUP BY Пациенты.Фамилия);
выдает не одного, самого активного пациента, а всех, кто обращался больше 1 раза. Подскажите, пожалуйста, где я себя обманула?
Uh-Oh вне форума Ответить с цитированием
Старый 03.05.2012, 15:23   #2
SovereignSun
Форумчанин
 
Регистрация: 22.11.2011
Сообщений: 127
По умолчанию

where вам в помощь
SovereignSun вне форума Ответить с цитированием
Старый 03.05.2012, 15:25   #3
Uh-Oh
Пользователь
 
Регистрация: 24.09.2011
Сообщений: 12
По умолчанию

Если сделать все то же, заменяя ON на WHERE результат не меняется.
Или надо его еще где-то использовать?
Uh-Oh вне форума Ответить с цитированием
Старый 03.05.2012, 15:31   #4
SovereignSun
Форумчанин
 
Регистрация: 22.11.2011
Сообщений: 127
По умолчанию

тогда Max функцию используйте

или Limit=1 сделайте на критерий поиска
SovereignSun вне форума Ответить с цитированием
Старый 03.05.2012, 15:33   #5
SovereignSun
Форумчанин
 
Регистрация: 22.11.2011
Сообщений: 127
По умолчанию

Код:
SELECT Пациенты.Фамилия, count(Обращения.Код) AS [Количество обращений]
FROM Пациенты INNER JOIN Обращения ON Пациенты.Код = Обращения.Пациент
GROUP BY Пациенты.Фамилия
HAVING count(Обращения.Код)> ANY
(SELECT max(Обращения.Код)
FROM Пациенты INNER JOIN Обращения ON Пациенты.Код = Обращения.Пациент 
GROUP BY Пациенты.Фамилия);
SovereignSun вне форума Ответить с цитированием
Старый 03.05.2012, 15:41   #6
Uh-Oh
Пользователь
 
Регистрация: 24.09.2011
Сообщений: 12
По умолчанию

Так действительно работает, спасибо. А если бы коды обращения стояли не по порядку или вообще были случайными?
Uh-Oh вне форума Ответить с цитированием
Старый 03.05.2012, 15:49   #7
=master=
Форумчанин
 
Регистрация: 26.03.2012
Сообщений: 665
По умолчанию

Цитата:
Так действительно работает
Где ж оно раотает?
Какая субд?
=master= вне форума Ответить с цитированием
Старый 03.05.2012, 15:53   #8
papirys
 
Регистрация: 03.05.2012
Сообщений: 7
По умолчанию

Так Вы получили в подзапросе максимальное значените КОДА из таблицы Обращения и сравниваете его с числом (count(Обращения.Код)).
papirys вне форума Ответить с цитированием
Старый 03.05.2012, 15:55   #9
Uh-Oh
Пользователь
 
Регистрация: 24.09.2011
Сообщений: 12
По умолчанию

В Access работает))) Не буду говорить, что понимаю почему.
Uh-Oh вне форума Ответить с цитированием
Старый 03.05.2012, 15:55   #10
SovereignSun
Форумчанин
 
Регистрация: 22.11.2011
Сообщений: 127
По умолчанию

Поиск ведется по колонке Обращения.Код по всей таблице, можно порядок не ставить.
SovereignSun вне форума Ответить с цитированием
Ответ

Здесь нужно купить рекламу за 20 тыс руб в месяц! ) пишите сюда - alarforum@yandex.ru
Без учёта ботов - 20000 человек в день, 350000 в месяц.

Опции темы


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Проблема с запросом! Chemik Microsoft Office Access 1 06.01.2012 15:11
проблема с запросом virtuhay266 SQL, базы данных 1 06.06.2011 21:26
Проблема с запросом StreetNBA Microsoft Office Access 3 01.06.2011 14:25
Проблема с запросом! LizaVeta Общие вопросы Delphi 3 09.05.2010 07:07
Проблема c запросом! SatS SQL, базы данных 6 24.01.2009 23:52


Проекты отопления, пеллетные котлы, бойлеры, радиаторы
интернет магазин respective.ru
Пеллетный котёл Emtas
котлы EMTAS