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 :

Rechercher par rapport à une date


Sujet :

Langage SQL

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2008
    Messages
    391
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2008
    Messages : 391
    Par défaut Rechercher par rapport à une date
    Bonjour à tous,

    Je souhaite chercher les personnes n'ayant pas fais de commande depuis 1 an.
    Mais j'ai un peu de mal à réaliser cela.

    Je fais ma requête par rapport à la date mais il m'affiche les personnes ayant fais une commande il y a 1 an mais si ils ont commandés il y a 6 mois par exemple, il me l'affiche quand même.
    Je bug un peu dessus.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ELECT id_commande, date_commande FROM commandes WHERE date_commande<"'.$date_limite_en.'" GROUP BY id_commande
    Je pense que le group by prends le premier et non le dernier.

    Comment faire ?

    Merci d'avance

  2. #2
    Modérateur

    Profil pro
    dba
    Inscrit en
    Janvier 2010
    Messages
    5 643
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : dba

    Informations forums :
    Inscription : Janvier 2010
    Messages : 5 643
    Par défaut
    Bonjour,

    Il faut grouper non pas par commande, mais par "personne" (je suppose que vos commandes référencent les clients !)

    Il faut ensuite vérifier la date la plus élevée (MAX), ce qui se fera non pas avec un WHERE mais avec un HAVING, étant donné que c'est une restriction utilisant une fonction d’agrégat

  3. #3
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    22 010
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Expert bases de données / SQL / MS SQL Server / Postgresql
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2002
    Messages : 22 010
    Billets dans le blog
    6
    Par défaut
    Votre GROUP BY est stupide. Il n'y a pas de calcul d'agrégat !

    Voici la requête en SQL normatif :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT id_commande, date_commande 
    FROM   commandes 
    WHERE  date_commande <= CURENT_DATE - '1 YEAR'
    A +
    Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL
    Le site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/
    Blog SQL, SQL Server, SGBDR : http://blog.developpez.com/sqlpro
    Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp.
    Entreprise SQL SPOT : modélisation, conseils, audit, optimisation, formation...
    * * * * * Expertise SQL Server : http://mssqlserver.fr/ * * * * *

  4. #4
    Membre éclairé
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2008
    Messages
    391
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2008
    Messages : 391
    Par défaut
    Désolé SQLPro mais cela ne fonctionne pas.

    Et comment faire la requete avec Having aiiieeeeeuuuu?

  5. #5
    Modérateur

    Profil pro
    dba
    Inscrit en
    Janvier 2010
    Messages
    5 643
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : dba

    Informations forums :
    Inscription : Janvier 2010
    Messages : 5 643
    Par défaut
    En filtrant sur les personnes pour lesquelles la date max est inférieure à la date du jour moins un an.

  6. #6
    Membre éclairé
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2008
    Messages
    391
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2008
    Messages : 391
    Par défaut
    Et au niveau code, c'est à dire ?

    Je ne vois pas trop comment faire !

  7. #7
    Modérateur

    Profil pro
    dba
    Inscrit en
    Janvier 2010
    Messages
    5 643
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : dba

    Informations forums :
    Inscription : Janvier 2010
    Messages : 5 643
    Par défaut
    Citation Envoyé par Devilju69 Voir le message
    Je ne vois pas trop comment faire !
    Moi non plus, vu que vous n'avez pas précisé votre SGBDR (quoique si la première requête que vous avez postée a été acceptée, il doit s'agir de MySQL) et surtout, vous n'avez pas indiqué la structure de votre table.

    Par ailleurs, il s'agit d'une requete très simple pour laquelle je vous ai mis sur la voie. Avec un minimum de recherche sur le forum, vous devriez y arriver.

Discussions similaires

  1. [ASIQ] Comment tester par rapport à une date avec l'heure
    Par Soulkeum dans le forum Adaptive Server IQ
    Réponses: 1
    Dernier message: 08/02/2008, 18h06
  2. Réponses: 2
    Dernier message: 21/03/2007, 16h06
  3. Réponses: 7
    Dernier message: 31/07/2006, 13h50
  4. Réponses: 7
    Dernier message: 05/04/2006, 11h22
  5. [MySQL] Select count par rapport à une date
    Par ruty dans le forum PHP & Base de données
    Réponses: 17
    Dernier message: 02/04/2006, 22h17

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