Précédent   Forum des professionnels en informatique > Bases de données > MySQL > Débuter
Débuter Forum d'entraide pour débuter avec MySQL
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 24/05/2011, 09h57   #1
Membre régulier
 
Inscription : janvier 2009
Messages : 320
Détails du profil
Informations forums :
Inscription : janvier 2009
Messages : 320
Points : 90
Points : 90
Par défaut juste une confirmation

Bonjour, voila plus d'une semaine que je me casse les dents plusieurs requêtes.
Les résultats trouvés sont cohérents, mais hélas, faux (Cf glpi, l'outil qui me donne le véritable résultat des requêtes).

Je voudrais valider avec vous si ma requête est bonne ou non.
Voici la structure de ma table :

id - name - date - closedate - ... - status - ...

Je souhaite que ma requête compte tous les lignes de l'année 2011 classée par année.
Voici la requête que j'ai en ce moment :
Code :
SELECT YEAR(date) AS annee, COUNT(*) AS total FROM glpi_tickets GROUP BY annee
Pouvez vous me dire si j'ai juste ou non.

Merci d'avance
Redg9 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/05/2011, 10h45   #2
ced
Rédacteur/Modérateur

 
Avatar de ced
 
Homme Cédric Duprez
Inscription : avril 2002
Messages : 3 823
Détails du profil
Informations personnelles :
Nom : Homme Cédric Duprez
Âge : 36
Localisation : France, Loiret (Centre)

Informations professionnelles :
Secteur : Agroalimentaire - Agriculture

Informations forums :
Inscription : avril 2002
Messages : 3 823
Points : 6 440
Points : 6 440
Bonjour,

Quel intérêt de grouper par année si seule l'année 2011 t'intéresse ?
La requête suivant ne suffit-elle pas :
Code :
1
2
3
SELECT COUNT(*) AS total 
FROM glpi_tickets 
WHERE YEAR(date) = 2011
Au passage, j'espère que ton champ ne s'appelle pas réellement "date", parce que c'est un mot réservé du SQL et de MySQL, ce qui peut poser des problèmes dans les requêtes.

ced
__________________
Rédacteur / Modérateur SGBD
Mes tutoriels et la FAQ MySQL

----------------------------------------------------
Pensez aux balises code et au tag
Je ne réponds pas aux questions techniques par message privé, les forums sont là pour ça
ced est actuellement connecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/05/2011, 11h06   #3
Membre régulier
 
Inscription : janvier 2009
Messages : 320
Détails du profil
Informations forums :
Inscription : janvier 2009
Messages : 320
Points : 90
Points : 90
en réalité toutes les années m'intéresse..
Mon champ s'appelle date...

Je me suis rendu compte que j'ai 3 dates différentes. Comment faire pour compter les lignes pour les 3 dates ?
date - soledate - closedate

Je veux compter date+soledate+closedate

Merci
Redg9 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/05/2011, 12h09   #4
ced
Rédacteur/Modérateur

 
Avatar de ced
 
Homme Cédric Duprez
Inscription : avril 2002
Messages : 3 823
Détails du profil
Informations personnelles :
Nom : Homme Cédric Duprez
Âge : 36
Localisation : France, Loiret (Centre)

Informations professionnelles :
Secteur : Agroalimentaire - Agriculture

Informations forums :
Inscription : avril 2002
Messages : 3 823
Points : 6 440
Points : 6 440
Citation:
Envoyé par Redg9 Voir le message
Je veux compter date+soledate+closedate
Et comment faire quand les 3 dates portent sur une année différente ?
__________________
Rédacteur / Modérateur SGBD
Mes tutoriels et la FAQ MySQL

----------------------------------------------------
Pensez aux balises code et au tag
Je ne réponds pas aux questions techniques par message privé, les forums sont là pour ça
ced est actuellement connecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/05/2011, 12h12   #5
Membre régulier
 
Inscription : janvier 2009
Messages : 320
Détails du profil
Informations forums :
Inscription : janvier 2009
Messages : 320
Points : 90
Points : 90
On les prends pas en compte. (et c'est à ce moment la que j'ai l'impression de dire une grosse conne*ie)
Redg9 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/05/2011, 12h14   #6
ced
Rédacteur/Modérateur

 
Avatar de ced
 
Homme Cédric Duprez
Inscription : avril 2002
Messages : 3 823
Détails du profil
Informations personnelles :
Nom : Homme Cédric Duprez
Âge : 36
Localisation : France, Loiret (Centre)

Informations professionnelles :
Secteur : Agroalimentaire - Agriculture

Informations forums :
Inscription : avril 2002
Messages : 3 823
Points : 6 440
Points : 6 440
Le mieux serait que tu nous donnes un exemple de ce que tu as en base et de ce que tu souhaites comme résultat de la requête à partir de cet exemple.
__________________
Rédacteur / Modérateur SGBD
Mes tutoriels et la FAQ MySQL

----------------------------------------------------
Pensez aux balises code et au tag
Je ne réponds pas aux questions techniques par message privé, les forums sont là pour ça
ced est actuellement connecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/05/2011, 12h21   #7
Membre régulier
 
Inscription : janvier 2009
Messages : 320
Détails du profil
Informations forums :
Inscription : janvier 2009
Messages : 320
Points : 90
Points : 90
D'accord.

Code :
1
2
3
4
5
6
 
 
             date                                closedate                     
2011-04-07 12:32:39 	2011-04-18 14:26:40 	
2011-04-07 13:36:51 	2011-04-12 14:57:23 		
2011-04-18 10:00:57 	2011-04-18 14:24:09

Sachant que date peut être de 2010 et que closedate peut etre de 2011.

Ce que je souhaite faire c'est compter toutes lignes dans date ou de closedate ont pour année 2011 trier par année. Avec l'extrait au dessus ca donnerait un résultat comme ca : 2011 3

Edit : merci de ta patience
Redg9 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/05/2011, 13h25   #8
ced
Rédacteur/Modérateur

 
Avatar de ced
 
Homme Cédric Duprez
Inscription : avril 2002
Messages : 3 823
Détails du profil
Informations personnelles :
Nom : Homme Cédric Duprez
Âge : 36
Localisation : France, Loiret (Centre)

Informations professionnelles :
Secteur : Agroalimentaire - Agriculture

Informations forums :
Inscription : avril 2002
Messages : 3 823
Points : 6 440
Points : 6 440
Essaie quelque chose comme :
Code :
1
2
3
4
SELECT GREATEST(YEAR(date), YEAR(closedate)) AS annee, COUNT(*) AS total 
FROM glpi_tickets 
GROUP BY 1
ORDER BY 1
S'il y a un troisième champ de type date à prendre en compte, tu peux l'ajouter dans la fonction GREATEST à la suite des autres.

ced
__________________
Rédacteur / Modérateur SGBD
Mes tutoriels et la FAQ MySQL

----------------------------------------------------
Pensez aux balises code et au tag
Je ne réponds pas aux questions techniques par message privé, les forums sont là pour ça
ced est actuellement connecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/05/2011, 13h40   #9
Membre régulier
 
Inscription : janvier 2009
Messages : 320
Détails du profil
Informations forums :
Inscription : janvier 2009
Messages : 320
Points : 90
Points : 90
J'ai lu la doc sur GREATEST. Il compare, si j'ai bien compris, et afffiche le plus grand.

Ce que je souhaite faire c'est additionner les deux. Par exemple avec soldate j'ai 103 pour l'année 2011 et avec date j'ai 102. Ce que je veux c'est 205.

Merci
Redg9 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/05/2011, 15h47   #10
Membre régulier
 
Inscription : janvier 2009
Messages : 320
Détails du profil
Informations forums :
Inscription : janvier 2009
Messages : 320
Points : 90
Points : 90
j'ai trouvé la solution en codant.. Mais je trouve cela très sale.
Je ne mets donc pas le topic en Résolu même si grâce à mon code je n'ai plus le problème.

Merci pour ta contribution Ced.
Redg9 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/05/2011, 10h47   #11
Modérateur
 
Avatar de CinePhil
 
Homme Philippe Leménager
Ingénieur d'études en informatique
Inscription : août 2006
Messages : 11 001
Détails du profil
Informations personnelles :
Nom : Homme Philippe Leménager
Âge : 48
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations professionnelles :
Activité : Ingénieur d'études en informatique
Secteur : Enseignement

Informations forums :
Inscription : août 2006
Messages : 11 001
Points : 18 262
Points : 18 262
Envoyer un message via MSN à CinePhil
Citation:
Envoyé par Redg9 Voir le message
Ce que je souhaite faire c'est additionner les deux. Par exemple avec soldate j'ai 103 pour l'année 2011 et avec date j'ai 102. Ce que je veux c'est 205.
Donc en réalité tu multiplie quasiment par deux le nombre de tickets !

Ça ne correspond pas à ton besoin exprimé dans ton premier message :
Citation:
Je souhaite que ma requête compte tous les lignes de l'année 2011 classée par année.
__________________
Philippe Leménager. Ingénieur d'étude à l'École Nationale de Formation Agronomique.
Mon blog sur la conception des BDD, le langage SQL, le PHP avec Zend Framework...
« Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
À la maison comme au bureau, j'utilise Mandriva Linux ou Mageïa ! Soutenons l'industrie logicielle française !
Linuxiens, comptez-vous !
CinePhil est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/05/2011, 10h35   #12
Membre régulier
 
Inscription : janvier 2009
Messages : 320
Détails du profil
Informations forums :
Inscription : janvier 2009
Messages : 320
Points : 90
Points : 90
En effet, intitulé erroné. Je m'en excuse
Redg9 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 14h05.


 
 
 
 
Partenaires

Hébergement Web