| 
 | 
| 
 
Сложный запрос - помогите придумать! 
 | 
|||
|---|---|---|---|
| 
 #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=32152093&tid=2008186]:  | 
    0ms | 
get settings:  | 
    8ms | 
get forum list:  | 
    13ms | 
check forum access:  | 
    4ms | 
check topic access:  | 
    4ms | 
track hit:  | 
    54ms | 
get topic data:  | 
    9ms | 
get forum data:  | 
    2ms | 
get page messages:  | 
    51ms | 
get tp. blocked users:  | 
    2ms | 
| others: | 256ms | 
| total: | 403ms | 

| 0 / 0 | 

На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даете согласие с использованием данных технологий.