|
|
|
Запрос с JOIN и GROUP BY
|
|||
|---|---|---|---|
|
#18+
Есть две таблицы 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 - таблица с кодами и названиями поликлиник Прошу помощи в написании запроса для выполнения описанной задачи ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.11.2007, 11:33 |
|
||
|
Запрос с JOIN и GROUP BY
|
|||
|---|---|---|---|
|
#18+
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. Смущает фраза "...отпущенных по ней рецептов аптекой. " Есть связь между рецептом и выписанным поликлиникой и рецептом отпущенные аптеками ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.11.2007, 13:57 |
|
||
|
Запрос с JOIN и GROUP BY
|
|||
|---|---|---|---|
|
#18+
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. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.11.2007, 06:36 |
|
||
|
Запрос с JOIN и GROUP BY
|
|||
|---|---|---|---|
|
#18+
Корреляционые подзапросы в качестве колонок работают в 9 версии :( С уважением, Алексей ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.11.2007, 07:59 |
|
||
|
Запрос с JOIN и GROUP BY
|
|||
|---|---|---|---|
|
#18+
Aleksey-KКорреляционые подзапросы в качестве колонок работают в 9 версии :( С уважением, Алексей Есть ли какие-либо варианты для 8 версии в решении задачи? Спасибо за готовность помочь ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.11.2007, 06:13 |
|
||
|
Запрос с JOIN и GROUP BY
|
|||
|---|---|---|---|
|
#18+
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 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.11.2007, 07:11 |
|
||
|
|

start [/forum/topic.php?fid=41&msg=34940601&tid=1588528]: |
0ms |
get settings: |
7ms |
get forum list: |
14ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
132ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
43ms |
get tp. blocked users: |
1ms |
| others: | 196ms |
| total: | 411ms |

| 0 / 0 |
