powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Запрос с JOIN и GROUP BY
6 сообщений из 6, страница 1 из 1
Запрос с JOIN и GROUP BY
    #34937717
G-гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Есть две таблицы Fox Pro: pol (рецепты выписанные поликлиникой) и apteka (рецепты отпущенные аптеками). Pol содержит код

поликлиники (id_p), номер рецепта и пр. Apteka содержит код аптеки, код поликлиники (id_p) выписавшей рецепт, номер рецепта

и пр.
Задача: нужно вывести список поликлиник, количество выписанных ее рецептов, количество отпущенных по ней рецептов аптекой.

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

SELECT org.name, count(pol.*),count(apteka1.otp_rec) FROM pol INNER JOIN org ON org.id =pol.id_p INNER JOIN (SELECT id_p, count(*) as otp_rec FROM apteka GROUP BY id_p) as apteka1 ON apteka1.id_p=pol.id_p GROUP BY org.name

где org - таблица с кодами и названиями поликлиник

Прошу помощи в написании запроса для выполнения описанной задачи
...
Рейтинг: 0 / 0
Запрос с JOIN и GROUP BY
    #34938484
Фотография Aleksey-K
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
G-гостьЕсть две таблицы Fox Pro: pol (рецепты выписанные поликлиникой) и apteka (рецепты отпущенные аптеками). Pol содержит код

поликлиники (id_p), номер рецепта и пр. Apteka содержит код аптеки, код поликлиники (id_p) выписавшей рецепт, номер рецепта

и пр.
Задача: нужно вывести список поликлиник, количество выписанных ее рецептов, количество отпущенных по ней рецептов аптекой.

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

SELECT org.name, count(pol.*),count(apteka1.otp_rec) FROM pol INNER JOIN org ON org.id =pol.id_p INNER JOIN (SELECT id_p, count(*) as otp_rec FROM apteka GROUP BY id_p) as apteka1 ON apteka1.id_p=pol.id_p GROUP BY org.name

где org - таблица с кодами и названиями поликлиник

Прошу помощи в написании запроса для выполнения описанной задачи
Версия VFP надеюсь 9 ?
SELECT org.name
, NVL((SELECT COUNT(*) FROM pol WHERE pol.id = org.id), 0) AS count_1
, NVL((SELECT COUNT(*) FROM Apteka WHERE Apteka.id = org.id), 0) AS count_2
FROM org
ORDER BY org.name
С уважением, Алексей
P.S. Смущает фраза "...отпущенных по ней рецептов аптекой. "
Есть связь между рецептом и выписанным поликлиникой и рецептом отпущенные аптеками ?
...
Рейтинг: 0 / 0
Запрос с JOIN и GROUP BY
    #34940539
G-гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Aleksey-K
Версия VFP надеюсь 9 ?
нет 8

SELECT org.name
, NVL((SELECT COUNT(*) FROM pol WHERE pol.id = org.id), 0) AS count_1
, NVL((SELECT COUNT(*) FROM Apteka WHERE Apteka.id = org.id), 0) AS count_2
FROM org
ORDER BY org.name

и fox пишет Invalid use of subquery. Я, честно говоря, использую обычно запросы попроще, такой задачи (поставленной мной же) не стояло. С функцией nvl встречаюсь впервые, посему не очень понимаю как это все должно по идее сгруппироваться?

P.S. Смущает фраза "...отпущенных по ней рецептов аптекой. "
Есть связь между рецептом и выписанным поликлиникой и рецептом отпущенные аптеками ?
Как таковой связи нет, хотя смысл конечно такой, что аптека отпускает рецепты, которые выписаны хотяб какой поликлиникой. Т.е. мы запросом должны посчитать сколько каждой из поликлиник выписано рецептов и сколько в аптеке по той же поликлиники отпустили. Поликлиника ведет учет в таблице pol, а аптеки ведут свой учет в таблице apteka.
...
Рейтинг: 0 / 0
Запрос с JOIN и GROUP BY
    #34940601
Фотография Aleksey-K
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Корреляционые подзапросы в качестве колонок работают в 9 версии :(
С уважением, Алексей
...
Рейтинг: 0 / 0
Запрос с JOIN и GROUP BY
    #34943563
G-гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Aleksey-KКорреляционые подзапросы в качестве колонок работают в 9 версии :(
С уважением, Алексей

Есть ли какие-либо варианты для 8 версии в решении задачи? Спасибо за готовность помочь
...
Рейтинг: 0 / 0
Запрос с JOIN и GROUP BY
    #34943587
Kruchinin Pahan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
G-гость Aleksey-KКорреляционые подзапросы в качестве колонок работают в 9 версии :(
С уважением, Алексей

Есть ли какие-либо варианты для 8 версии в решении задачи? Спасибо за готовность помочь
Разбить на 3 подзапроса.
1. SELECT Pol.Id, COUNT(Pol.Id) FROM Pol GROUP BY 1 INTO CURSOR CurPol NOFILTER
2. То же из Apteka
3. FROM Org LEFT JOIN CurPol LEFT JOIN Apteka
...
Рейтинг: 0 / 0
6 сообщений из 6, страница 1 из 1
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Запрос с JOIN и GROUP BY
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]