Nous sommes actuellement le 26 Avr 2024, 07:50

Le fuseau horaire est UTC-5 heures [Heure d’été]




Publier un nouveau sujet Répondre au sujet  [ 8 message(s) ] 
Auteur Message
 Sujet du message: requête MySQL
MessagePublié: 06 Fév 2009, 11:17 
Hors-ligne
Fidèle
Fidèle
Avatar de l’utilisateur

Inscription : 17 Avr 2002, 21:36
Message(s) : 755
Localisation : Laval
J'ai une table avec les champs suivants :

[list=]
[*]id
[*]url
[*]ip
[*]host
[*]referrer
[*]agent
[*]browser
[*]browVer
[*]os
[*]pays
[*]timestamp
[/list]

J'essais de faire une requête qui retournerait une table avec les colonnes suivantes :

Où l'on s'intéresse uniquement au "hits", c'est à dire le nombre de fois que URL apparait dans une période données

[list=]
[*]url
[*]total
[*]aujourd'hui
[*]hier
[*]avant hier
[*]semaine
[*]semaine dernière
[*]mois
[*]mois dernier
[*]6 mois
[*]1 an
[/list]

Dans un premier temps je vais simplement essayer de faire une requête retournant les colonnes url, total et aujourd'hui

Les deux requête suivantes fonctionnent :

Code :
SELECT url, count( url ) AS total
FROM visitors AS t1
GROUP BY url


Code :
SELECT url, count( url ) AS auj
FROM visitors AS t2
where timestamp > '2009-02-06 00:00:01'
GROUP BY url



donc j'essais de faire une jointure entre les deux :


Code :
(
SELECT url, count( url ) AS auj
FROM visitors AS t2
where timestamp > '2009-02-06 00:00:01'
GROUP BY url
)
left join
(
SELECT url, count( url ) AS total
FROM visitors AS t1
GROUP BY url
)
ON t1.url=t2.url


C'est là que ça ne fonctionne plus, j'ai essayé plusieurs variantes mais sans succès


Haut
 Profil  
Répondre en citant  
 Sujet du message: Re: requête MySQL
MessagePublié: 06 Fév 2009, 12:20 
Hors-ligne
Administrateur
Administrateur
Avatar de l’utilisateur

Inscription : 10 Déc 2001, 17:54
Message(s) : 1947
Localisation : Saint-Émile
Pourquoi ne pas le faire en 2 requête ?

Mais vous pouvez y arriver avec un sub-select comme suit :
Code :
SELECT url, count( url ) AS total,
(SELECT url, count( url ) FROM visitors t2 WHERE t1.url=t2.url AND timestamp > CURDATE()) AS auj
FROM visitors t1
GROUP BY url

_________________
Nicolas Ross
Administrateur du site Micro.Info,
Ingénieur, CyberCat


Dans la plupart des pays la vente de choses nocives, comme des drogues, est interdite.
Alors pourquoi les gens peuvent vendre les logiciels de Microsoft et rester impunis ?


Haut
 Profil  
Répondre en citant  
 Sujet du message: Re: requête MySQL
MessagePublié: 06 Fév 2009, 13:36 
Hors-ligne
Fidèle
Fidèle
Avatar de l’utilisateur

Inscription : 17 Avr 2002, 21:36
Message(s) : 755
Localisation : Laval
malheureusement ça ne fonctionne pas

Citer:
MySQL a répondu:Documentation
#1241 - Operand should contain 1 column(s)


Haut
 Profil  
Répondre en citant  
 Sujet du message: Re: requête MySQL
MessagePublié: 06 Fév 2009, 13:53 
Hors-ligne
Fidèle
Fidèle
Avatar de l’utilisateur

Inscription : 17 Avr 2002, 21:36
Message(s) : 755
Localisation : Laval
J'ai finalement réussi

Code :
 SELECT a.url, total, auj
FROM (

SELECT url, count( url ) AS total
FROM visitors
GROUP BY url
) AS a
INNER JOIN (

SELECT url, count( url ) AS auj
FROM visitors
WHERE timestamp > "2009-02-06 00:00:01"
GROUP BY url
) AS b ON a.url = b.url


merci


Haut
 Profil  
Répondre en citant  
 Sujet du message: Re: requête MySQL
MessagePublié: 06 Fév 2009, 14:43 
Hors-ligne
Administrateur
Administrateur
Avatar de l’utilisateur

Inscription : 10 Déc 2001, 17:54
Message(s) : 1947
Localisation : Saint-Émile
psaindon a écrit:
malheureusement ça ne fonctionne pas

Probablement que vous avez mysql < 4.1. Car les sub-select sont apparu en 4.1. Je vous conseil d'upgrader, 4.1 est même vieux...

_________________
Nicolas Ross
Administrateur du site Micro.Info,
Ingénieur, CyberCat


Dans la plupart des pays la vente de choses nocives, comme des drogues, est interdite.
Alors pourquoi les gens peuvent vendre les logiciels de Microsoft et rester impunis ?


Haut
 Profil  
Répondre en citant  
 Sujet du message: Re: requête MySQL
MessagePublié: 06 Fév 2009, 15:07 
Hors-ligne
Fidèle
Fidèle
Avatar de l’utilisateur

Inscription : 17 Avr 2002, 21:36
Message(s) : 755
Localisation : Laval
Non c'est bien la version 5


Haut
 Profil  
Répondre en citant  
 Sujet du message: Re: requête MySQL
MessagePublié: 06 Fév 2009, 15:12 
Hors-ligne
Administrateur
Administrateur
Avatar de l’utilisateur

Inscription : 10 Déc 2001, 17:54
Message(s) : 1947
Localisation : Saint-Émile
Ah, je crois que j'ai fait une erreur dans mon sql :
Code :
SELECT url, count( url ) AS total,
(SELECT count( url ) FROM visitors t2 WHERE t1.url=t2.url AND timestamp > CURDATE()) AS auj
FROM visitors t1
GROUP BY url

Devrait fonctionner.

_________________
Nicolas Ross
Administrateur du site Micro.Info,
Ingénieur, CyberCat


Dans la plupart des pays la vente de choses nocives, comme des drogues, est interdite.
Alors pourquoi les gens peuvent vendre les logiciels de Microsoft et rester impunis ?


Haut
 Profil  
Répondre en citant  
 Sujet du message: Re: requête MySQL
MessagePublié: 06 Fév 2009, 16:11 
Hors-ligne
Fidèle
Fidèle
Avatar de l’utilisateur

Inscription : 17 Avr 2002, 21:36
Message(s) : 755
Localisation : Laval
effectivement ça fonctionne.

merci


Haut
 Profil  
Répondre en citant  
Afficher les messages publiés depuis :  Trier par  
Publier un nouveau sujet Répondre au sujet  [ 8 message(s) ] 

Le fuseau horaire est UTC-5 heures [Heure d’été]


Qui est en ligne ?

Utilisateur(s) parcourant ce forum : Aucun utilisateur inscrit et 8 invité(s)


Vous ne pouvez pas publier de nouveaux sujets dans ce forum
Vous ne pouvez pas répondre aux sujets dans ce forum
Vous ne pouvez pas éditer vos messages dans ce forum
Vous ne pouvez pas supprimer vos messages dans ce forum

Recherche de:
Aller vers :  
Propulsé par phpBB® Forum Software © phpBB Group
Traduction et support en françaisHébergement de site