У меня есть таблица, которая хранит страницы попадает на веб-приложения, хранениеSQL - присоединиться два отдельных SQL-запросов
unique_row_id http_session_id page_name page_hit_timestamp
----------------------------------------------------------------
0 123456789 index.html 2010-01-20 15:00:00
1 123456789 info.html 2010-01-20 15:00:05
2 123456789 faq.html 2010-01-20 15:00:15
3 987654321 index.html 2010-01-20 16:00:00
4 987654321 faq.html 2010-01-20 16:00:05
5 987654321 info.html 2010-01-20 16:00:15
6 111111111 index.html 2010-01-20 16:01:00
7 111111111 faq.html 2010-01-20 16:01:05
8 111111111 info.html 2010-01-20 16:01:15
Я хочу, чтобы запустить SQL запрос, который будет показывать мне наиболее распространенную страницу, что пользователи конец просмотра.
Итак, мое первоначальное мышление заключается в том, что в моем (java) приложении я могу запустить запрос, который выберет различные значения http_session_id из таблицы, а затем для каждого отдельного http_session_id запустит другой запрос, который получит страницу с " last 'page_hit_timestamp и суммировать общее количество всех этих страниц. (Для данных примера, приведенных выше, у меня будет счет 2 для info.html и число 1 для faq.html.)
Но, что я хотел бы знать, так это: есть ли способ объединить эти два запроса в один оператор sql - или мне придется спуститься по пути хранимой процедуры для этого?
Я посмотрел на использование соединения, но не могу понять, применимо ли оно в этом сценарии.
PS - Я знаю, что я мог бы использовать подобные приложения для Google Analytics в своем приложении, чтобы предоставить эту информацию для меня, но а) это мобильное веб-приложение, которое не очень удобно для инструментов аналитики на полках, и б) Мне просто интересно узнать, можно ли это сделать в SQL.
BTW - Я использую Oracle 9g (в prod), но хотел бы иметь общий синтаксис sql, поэтому я также могу запустить MySQL в своей среде dev. – Kevin
Первый вопрос: ПОЧЕМУ? проанализируйте свои журналы веб-сервера, чтобы получить эту информацию. Вам не нужно использовать Google Analytics или подобное приложение для получения этой функции, и вам нечего писать. Журналы вашего сервера намного более подробные, и вы не подвергаете себя штрафу за выполнение этого дважды (то есть сервер делает это один раз, и вы делаете это второй раз). –
Привет, Дэвид - разумный вопрос. Основная причина, по которой вы меняете, - это ограничение того, какие данные я должен иметь.Гораздо проще выполнить запрос по данным, к которым у меня есть доступ, чем пройти через процесс, создающий access_log и инструменты для его анализа - серверная среда управляется корпоративным центром обработки данных, и изменение не происходит слишком быстро. Кроме того, текущие журналы базы данных предоставляют некоторые другие самородки информации, которые не будут доступны в access_log. – Kevin