Page 1 sur 1

Requête avec COUNT sur dates, et date groupées

Posté : 29 avr. 2011, 16:33
par AoSiX
Bonjour,

je cherche une à faire une requête SQL ( sous MySQL 5 ) qui n'a pas l'air bien compliqué à première vue, mais qui me fait souffrir depuis 1 bonne heure ! Tout d'abord, voici ma table :

Code : Tout sélectionner

id, date_attribution, date_utilisation 1, 2011-04-16, NULL 2, 2011-04-17, 2011-04-17 3, 2011-04-17, 2011-04-18 4, 2011-04-18, 2011-04-27 5, 2011-04-18, 2011-04-30
Ce que je cherche à avoir comme résultat, c'est un tableau avec pour une date, le nombre de date_attribution différent de NULL, et le nombre de date_utilisation différent de NULL.

Exemple de résultat pour ce tableau :

Code : Tout sélectionner

Date, Nb_Attr, Nb_Utilisation 2011-04-17, 1, 0 2011-04-17, 2, 1 2011-04-18, 2, 1 2011-04-27, 0, 1 2011-04-30, 0, 1
Toute mes tentatives se sont soldé par des échecs cuisants :( Le résultat le plus proche de ce que je voudrais a été obtenu avec le requête suivante :
SELECT * FROM
(
    SELECT COUNT(Clef_ID) as NB_ATTA, 0 as NB_UTILE, DATE_FORMAT(Date_Attachement,'%Y-%m-%d') as LADATE FROM Clef WHERE Date_Attachement IS NOT NULL GROUP BY LADATE
         UNION
     SELECT 0 as NB_ATTA, COUNT(Clef_ID) as NB_UTILE, DATE_FORMAT(Date_Utilisation,'%Y-%m-%d') as LADATE FROM Clef WHERE  Date_Utilisation IS NOT NULL GROUP BY LADATE
) 
as T 
GROUP BY T.LADATE
ORDER BY T.LADATE ASC;
Mais bizarrement de cette manière, NB_UTILE est toujours à 0 :/

J’espère que vous serez en mesure de m'aider,

Julien


EDIT: Je pourrai aussi faire deux requêtes et faire du traitement avec PHP, mais je ne pense pas que ce soit le meilleur moyen...

Re: Requête avec COUNT sur dates, et date groupées

Posté : 01 mai 2011, 12:53
par AoSiX
Personne ne peut m'aider ? :(

Re: Requête avec COUNT sur dates, et date groupées

Posté : 01 mai 2011, 17:23
par dunbar
Salut,

Moi je ferais simplement comme ceci ?
SELECT 
 date_attribution, date_utilisation, COUNT( date_utilisation )AS nb_utilisation
FROM test_date 
WHERE date_utilisation != '0000-00-00'
GROUP BY date_utilisation

Mais j'ai peut-être pas capté l'idée :)

PS: Sinon donne nous la structure de ta base et un jeu de donnée.

Re: Requête avec COUNT sur dates, et date groupées

Posté : 01 mai 2011, 18:39
par AoSiX
Hello,

alors, voici pour la table :
CREATE TABLE `Clef` (
  `Clef_ID` int(11) unsigned NOT NULL auto_increment,
  `Date_Attribution` datetime default NULL,
  `Date_Utilisation` datetime default NULL,
  PRIMARY KEY  (`Clef_ID`)
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8;
Pour ce qui est des données, les données citées au dessus sont bonnes :

Code : Tout sélectionner

Clef_ID, Date_Attribution, Date_Utilisation 1, 2011-04-16, NULL 2, 2011-04-17, 2011-04-17 3, 2011-04-17, 2011-04-18 4, 2011-04-18, 2011-04-27 5, 2011-04-18, 2011-04-301
Et pour ce qui est du résultat, on pourrait le décrire ainsi : Pour chaque date présente dans la table, qu'elle soit d'attribution ou d'utilisation, compter le nombre de clefs attribuées ET utilisées ce jour ci ( sachant qu'une des deux peut être à 0 ).