|
Сложный запрос - помогите придумать!
|
|||
---|---|---|---|
#18+
Помогите разобраться. Нужно написать сложный запрос. Вот ситуация: Для обработки статистики лог веб-сервера складыватся в табличку, после чего с помощью хитрых запросов формируется таблица со статистикой. Вот такой запрос это делает: INSERT INTO server_day SELECT '$YESTERDAY'::date as date, req_url, count(*) as reqs,count(DISTINCT host_ip) as hosts FROM stat_tmp WHERE date(vers)='$YESTERDAY'::date GROUP BY req_url ; Видно, что считается статистика хитов и хостов. Теперь надо дописать такую фичу: в таблице stat_tmp есть есть поле login, в котором для каждого запроса хранится логин пользователя, если он авторизован. В таблицу server_day я добавил поля reqs_u и hosts_u - в них нужно сложить кол-во хитов и хостов авторизованных пользователей, но не всех, а отвечающих особому критерию. Критерий можно просчитать заранее, и сделать таблицу users_tmp с одним полем - login - и в нее сложить логины нужных пользователей. То есть задача сводится к следующей: Написать запрос типа такого: INSERT INTO server_day SELECT '$YESTERDAY'::date as date, req_url, count(*) as reqs,count(DISTINCT host_ip) as hosts, count( ЧТО_ТО_ХИТРОЕ_1 ) as reqs_f, count( ЧТО_ТО_ХИТРОЕ_2 ) as hosts_f FROM stat_tmp WHERE date(vers)='$YESTERDAY'::date GROUP BY req_url ; надо придумать ЧТО_ТО_ХИТРОЕ_1 и ЧТО_ТО_ХИТРОЕ_2, так чтобы оно смотрело в поле login таблицы stat_tmp и выбирало только те записи, в которых login встречается в таблице users_tmp. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.04.2003, 16:30 |
|
Сложный запрос - помогите придумать!
|
|||
---|---|---|---|
#18+
ЧТО_ТО_ХИТРОЕ_1 и ЧТО_ТО_ХИТРОЕ_2 подразумевают subquery. Но сначало бы немешало полное опимание таблиц: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10.
"чтобы оно смотрело в поле login таблицы stat_tmp и выбирало только те записи, в которых login встречается в таблице users_tmp." subquery: Код: plaintext
... |
|||
:
Нравится:
Не нравится:
|
|||
30.04.2003, 18:48 |
|
Сложный запрос - помогите придумать!
|
|||
---|---|---|---|
#18+
Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23.
Надо проверить, но мне больше нравиться 1-ый вариант ... |
|||
:
Нравится:
Не нравится:
|
|||
03.06.2003, 16:26 |
|
|
start [/forum/topic.php?fid=53&msg=32152223&tid=2008186]: |
0ms |
get settings: |
11ms |
get forum list: |
14ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
31ms |
get topic data: |
14ms |
get forum data: |
3ms |
get page messages: |
41ms |
get tp. blocked users: |
1ms |
others: | 14ms |
total: | 135ms |
0 / 0 |