Précédent   Forum des professionnels en informatique > Bases de données > MySQL > Requêtes
Requêtes Forum d'entraide sur les requêtes 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 14/09/2011, 20h29   #1
Membre habitué
 
Inscription : mai 2008
Messages : 285
Détails du profil
Informations personnelles :
Âge : 27
Localisation : France, Loire (Rhône Alpes)

Informations forums :
Inscription : mai 2008
Messages : 285
Points : 111
Points : 111
Par défaut Regroupement par saison

Bonjour a tous,

J'ai une colonne de type DATETIME nommé date.
J'aimerais faire un regroupement sur cette colonne par saison.
Je sais que pour faire un regroupement par année, on utilise ceci:
GROUP BY YEAR(date), seulement cette requête ne correspond pas a la saison.
Mais comment faire la même chose sur un regroupement annuel par saison.
Si je sais que chaque saison commence et termine le 1 septembre.

J'ai pas trouvé d'équivalent

Merci
peofofo est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/09/2011, 23h21   #2
Modérateur
 
Avatar de CinePhil
 
Homme Philippe Leménager
Ingénieur d'études en informatique
Inscription : août 2006
Messages : 11 029
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 029
Points : 18 328
Points : 18 328
Envoyer un message via MSN à CinePhil
Citation:
Envoyé par peofofo Voir le message
J'ai une colonne de type DATETIME nommé date.
Mauvais nom ! "DATE" est un mot réservé du langage SQL !

Citation:
J'aimerais faire un regroupement sur cette colonne par saison.
Je sais que pour faire un regroupement par année, on utilise ceci:
GROUP BY YEAR(date), seulement cette requête ne correspond pas a la saison.
Mais comment faire la même chose sur un regroupement annuel par saison.
Si je sais que chaque saison commence et termine le 1 septembre.
On va supposer que tu nommes la saison commençant le 01/09/2011 et se terminant le 31/08/2012 la saison '2011-2012'.

Avec cette requête, tu peux avoir, pour chaque ligne de ta table, la saison correspondant à la date :
Code :
1
2
3
4
5
6
SELECT     
    CASE
        WHEN MONTH(`date`) > 8 THEN CONCAT(YEAR(`date`), '-', YEAR(`date`) + 1)
        ELSE CONCAT(YEAR(`date`) - 1, '-', YEAR(`date`))
    END AS Saison
FROM la_table
Il suffit d'intégrer ce CASE WHEN dans ta requête de regroupement ou dans une sous requête de celle-ci. Comme tu ne donnes pas la structure de ta table et ce que tu veux regrouper, je ne peux pas le deviner et te donner une requête plus complète mais tu as l'idée générale.

Bon courage !
__________________
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 actuellement connecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/09/2011, 14h32   #3
Membre habitué
 
Inscription : mai 2008
Messages : 285
Détails du profil
Informations personnelles :
Âge : 27
Localisation : France, Loire (Rhône Alpes)

Informations forums :
Inscription : mai 2008
Messages : 285
Points : 111
Points : 111
Désolé de n'a pas avoir pu répondre plus tôt.
Merci pour la solution CinePhil, ça marche impecable
peofofo est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 01h57.


 
 
 
 
Partenaires

Hébergement Web