J'ai une table qui stocke la page frappe sur une application Web, le stockageSQL - joindre deux sql séparés requêtes
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
Je veux exécuter une requête SQL qui va me montrer la page la plus commune que les utilisateurs fin de la navigation. Donc, mon idée initiale est que dans mon application (java), je peux lancer une requête qui va sélectionner les valeurs distinctes de http_session_id de la table, puis pour chaque session http_session_id distincte, exécuter une autre requête qui obtient la page avec le ' dernier 'page_hit_timestamp, et additionne le total de toutes ces pages. (Pour les exemples de données ci-dessus, j'aurais un compte de 2 pour info.html et un compte de 1 pour faq.html.)
Mais, ce que je voudrais savoir est: est-il façon de combiner ces deux requêtes en une seule instruction SQL - ou devrais-je descendre la route de la procédure stockée pour cela?
J'ai jeté un œil sur l'utilisation de join, mais je ne peux pas déterminer si c'est applicable dans ce scénario. PS - Je sais que je pourrais utiliser les goûts de Google Analytics dans mon application pour fournir cette information pour moi, mais a) c'est une application web mobile donc pas génial pour les outils d'analyse sur étagère, et b) I ' Je suis juste curieux de savoir si cela peut être fait en SQL.
BTW - J'utilise Oracle 9g (en prod), mais je voudrais avoir une syntaxe SQL générique pour que je puisse aussi utiliser MySQL dans mon environnement de développement. – Kevin
Première question: POURQUOI? analyser les journaux de votre serveur Web pour obtenir cette information. Vous n'avez pas besoin d'utiliser Google Analytics ou une application similaire pour obtenir cette fonctionnalité, ni d'écrire quoi que ce soit. Les journaux de vos serveurs sont beaucoup plus détaillés et vous ne subissez pas de pénalité de performance deux fois (c'est-à-dire que le serveur le fait une fois, et vous le faites une seconde fois). –
Salut David - une question raisonnable. La principale raison de lancer la mienne ici est une restriction des données que j'ai à fournir.Il est beaucoup plus facile d'exécuter une requête sur les données auxquelles j'ai accès que de passer par le processus de configuration d'access_log et d'outils pour l'analyser: l'environnement serveur est géré par le centre de données d'entreprise et le changement n'est pas trop rapide. De plus, les journaux de base de données actuels fournissent d'autres pépites d'informations qui ne seraient pas disponibles dans access_log. – Kevin