IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Requêtes MySQL Discussion :

Groupement par dates


Sujet :

Requêtes MySQL

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 12
    Par défaut Groupement par dates
    Bonjour,

    Alors, j'expose déjà le contexte :

    Je suis en train de créer une genre de FAQ qui liste les questions par mois... jusque la pas de problèmes, mais je souhaiterai lister les mois disponibles, c'est la que ca coince.

    Le problème en lui même :

    Je stocke mes dates dans un champs mysql en format DATE (cf Schema ci-dessous). et je souhaiterai recuperer un exemplaire unique sous la forme : YYYY-MM.

    - Structure de la table :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    CREATE TABLE faq (
      id int(11) NOT NULL auto_increment,
      a_name text NOT NULL,
      a_email text NOT NULL,
      a_ip text NOT NULL,
      question text NOT NULL,
      reponse text,
      is_valid int(1) NOT NULL default '0',
      date date NOT NULL default '0000-00-00',
      id_forum int(11) NOT NULL default '0',
      PRIMARY KEY  (id)
    ) TYPE=MyISAM;
    Voici quelques entrées :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    INSERT INTO faq VALUES ('','Pierre','pierre@truc.com','12.34.56.78','La question','La reponse','1','2006-06-10','0');
    INSERT INTO faq VALUES ('','Paul','Paul@truc.com','12.34.56.78','La question','La reponse','1','2006-05-22','0');
    INSERT INTO faq VALUES ('','Jacques','jacques@truc.com','12.34.56.78','La question','La reponse','1','2006-05-10','0');
    INSERT INTO faq VALUES ('','Jean','jean@truc.com','12.34.56.78','La question','La reponse','1','2006-04-12','0');
    INSERT INTO faq VALUES ('','Roger','roger@truc.com','12.34.56.78','La question','La reponse','1','2006-02-11','0');
    et le résultat attendu serait :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    DATE
    -----------
    2006-06
    2006-05
    2006-04
    2006-02
    Voila

    Merci d'avance pour votre aide.

    Nico.

  2. #2
    Membre éclairé Avatar de bouchette63
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    257
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 257
    Par défaut
    Salut,

    Pour lister tu peux faire :

    select distinct(date)
    from faq;

    Tout simplement

  3. #3
    Membre Expert
    Avatar de Alexandre T
    Homme Profil pro
    Chef de projets AMO
    Inscrit en
    Mai 2002
    Messages
    1 213
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Chef de projets AMO
    Secteur : Transports

    Informations forums :
    Inscription : Mai 2002
    Messages : 1 213
    Par défaut
    Pour répondre à la question qui demande le retour d'année et de mois :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    SELECT DISTINCT DATE_FORMAT(`date`,'%Y-%m') 
      FROM faq
    Conseil : Renommez le champ date de type date. Car date est un mot clef réservé de MySQL. Vous pourriez avoir quelques "bugs" surprises dans vos développements.
    Alexandre Tranchant
    Chef de projet AMO pour le Cerema.
    Retrouvez mes articles sur PHP et Symfony

  4. #4
    Membre éclairé Avatar de bouchette63
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    257
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 257
    Par défaut
    Et pour afficher seulement l'année et le mois tu fais :

    select distinct(substr(date,1,7) )
    from faq;

    Dis moi si sa marche.

    Sinon il faut convertir date en char

    Edit : Alexandre plus rapide que moi et meilleur méthode

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 12
    Par défaut
    Ca fonctionne parfaitement. merci a tous

    Nico.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Groupement par date avec jointure
    Par morality59 dans le forum Langage SQL
    Réponses: 2
    Dernier message: 26/07/2013, 11h53
  2. Groupement par date
    Par calou_33 dans le forum SQL
    Réponses: 5
    Dernier message: 21/01/2011, 16h36
  3. Groupement par Date
    Par ecoinfo dans le forum Développement
    Réponses: 7
    Dernier message: 14/01/2011, 15h48
  4. Groupement par DATE echantillonnage
    Par aymeric_garnier dans le forum Langage SQL
    Réponses: 8
    Dernier message: 21/04/2008, 13h01
  5. pb groupement par date
    Par maysa dans le forum Langage SQL
    Réponses: 2
    Dernier message: 25/05/2007, 09h43

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo