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

Langage SQL Discussion :

requête SQL: recuperation de données sur plusieurs années


Sujet :

Langage SQL

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 7
    Points : 5
    Points
    5
    Par défaut requête SQL: recuperation de données sur plusieurs années
    Bonjour, j'ai une base de données qui associe un produit à sa date d'achat (date sous la forme aaaa-mm-jj) et j'aimerais récupérer des données sur le produit entre 2 dates, par exemple entre mai 2006 et juin 2007.
    J'ai une requête qui me fait déjà ça mais entre 2 mois de la même année et ce que je veux, c'est pouvoir récupérer ces mêmes données entre 2 mois mais pas forcément de la même année:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    SELECT *,EXTRACT(DAY FROM produit_date) as d,EXTRACT(MONTH FROM produit_date) as m,EXTRACT(YEAR FROM produit_date) as y
    FROM produit
    WHERE ...
    AND EXTRACT(MONTH FROM produit_date) >= month1
    AND EXTRACT(MONTH FROM produit_date) <= month2
    AND EXTRACT(YEAR FROM produit_date) = year
    ORDER BY produit_nom,produit_date
    Comment pourrais-je rentrer la deuxième année pour qu'il me récupère les données entre month1/year1 et month2/year2?

  2. #2
    Membre confirmé
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Octobre 2005
    Messages
    215
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2005
    Messages : 215
    Points : 471
    Points
    471
    Par défaut
    Salut,
    Tu peux faire un
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    WHERE produit_date >= date1
    AND produit_date <= date2
    et rentrer tes dates "fixes" sous forme de date.
    « Pourquoi faire simple quand on peut faire compliqué ? » (Deuxième principe fondamental de la logique Shadok)

  3. #3
    Membre habitué
    Inscrit en
    Juillet 2007
    Messages
    433
    Détails du profil
    Informations forums :
    Inscription : Juillet 2007
    Messages : 433
    Points : 130
    Points
    130
    Par défaut
    Ou mieux, utiliser BETWEEN

  4. #4
    Membre éprouvé Avatar de Mathusalem
    Profil pro
    IT moa
    Inscrit en
    Décembre 2003
    Messages
    1 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : IT moa

    Informations forums :
    Inscription : Décembre 2003
    Messages : 1 008
    Points : 1 067
    Points
    1 067
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    SELECT *,EXTRACT(DAY FROM produit_date) AS d,EXTRACT(MONTH FROM produit_date) AS m,EXTRACT(YEAR FROM produit_date) AS y
    FROM produit
    WHERE ...
    AND produit_date between '20060101' and '20070531'
    ORDER BY produit_nom,produit_date

  5. #5
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 7
    Points : 5
    Points
    5
    Par défaut
    Alors, je vous corse un peu le pb (ou pas): en fait, cette requête fait partie d'un prog java dans lequel je récupère un mois (mois1) et une année (annee1) de debut et un mois (mois2) et une année (annee2) de fin selectionnés dans des listes déroulantes.
    J'ai donc 4 listes déroulantes et je ne peux pas mettre de date fixe, j'aimerais qu'il me récupère les données entre mois1/année1 et mois2/année2.

  6. #6
    Membre averti Avatar de AL1986
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    434
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 434
    Points : 441
    Points
    441
    Par défaut
    Salut,
    Tu peux donc récupérer tes deux mois et tes deux années, ensuite tu pourrais créer un objet date avec ces données en mettant un jour bidon, par exemple pour créer un objet date correspondant au 1 janvier 1982 tu ecris:
    Code Java : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    import java.util.Calendar;
    ......
    Calendar cal = new java.util.GregorianCalendar(1982, 0, 1);
    Date d = new Date(cal.getTime().getTime());
    et après t'utilises le between ou la comparaison
    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    WHERE produit_date >= date1
    AND produit_date <= date2
    Etre ou ne pas être, telle est la question sinusoïdale de l'anachorète hypocondriaque et vice et versa .
    Bonsai monsieur, bonsai madame, vous avez gagnez un milliard de degrés au soleil .
    There is no cure for stupidity (ou pas ).

Discussions similaires

  1. Insérer des données sur plusieurs lignes dans une seule en SQL
    Par nathantahiti dans le forum Développement
    Réponses: 1
    Dernier message: 03/08/2011, 10h47
  2. Sql perte de données sur deux requêtes
    Par parasol007 dans le forum Langage SQL
    Réponses: 3
    Dernier message: 20/06/2008, 17h37
  3. recuperer les n° de semaine sur plusieurs années
    Par meredith dans le forum Langage SQL
    Réponses: 1
    Dernier message: 27/11/2007, 09h40
  4. Réponses: 3
    Dernier message: 16/04/2007, 13h28
  5. recuperer les id sur plusieurs champs
    Par matN59 dans le forum Langage SQL
    Réponses: 4
    Dernier message: 15/03/2004, 10h23

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