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 et SQL. Discussion :

Sélection d'entrées selon des critères de dates


Sujet :

Requêtes et SQL.

  1. #1
    Nouveau Candidat au Club
    Homme Profil pro
    Stagiaire
    Inscrit en
    Avril 2012
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Stagiaire
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Avril 2012
    Messages : 3
    Points : 1
    Points
    1
    Par défaut Sélection d'entrées selon des critères de dates
    Bonjour à tous,

    J'ai une base de données comprenant une table (que à priori je peux utiliser seule pour ce que je veux faire) composées de deux champs :
    - Un champ comprenant des noms d'entreprise
    - Un champ comprenant des dates de relance

    Du coup, vous comprendrez qu'il n'y a aucune clé, j'espère que ça ne pose pas de problème sinon un problème conceptuel ("c'est pas bien faut tout faire en BCNF !" ;D) Il peut y avoir plusieurs dates de relance pour une même entreprise et plusieurs entreprises pour une même date de relance.

    J'aimerai faire deux requêtes sur cette table :
    - Une qui me sortira la dernière date de relance pour chaque entreprise.
    - Et une, forcément étroitement liée à l'autre, qui me sortira toutes les entreprises dont la dernière date de relance est supérieure à il y a 6 mois.

    Voilà, étant novice en BDD (j'ai eu des cours très théoriques dessus, mais très peu de pratique et encore moins sous Access), je requiert votre aide parce que là j'ai beau me creuser la tête, je ne trouve pas comment en venir à bout (pourtant, j'ai bien compris qu'il me faut utiliser un Max(DateDiff("m"; Date(); Relances.[Date de relance])) donc je doit pas en être loin)

    Merci d'avance.

  2. #2
    Membre averti
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2008
    Messages
    286
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Finance

    Informations forums :
    Inscription : Février 2008
    Messages : 286
    Points : 383
    Points
    383
    Par défaut
    Bonjour,
    Pour ta première requete, cela pourrait donner qqchose comme (à tester):
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT Table1.Nom, Max(Table1.date) AS MaxDedate FROM Table1 GROUP BY Table1.Nom ORDER BY Table1.Nom, Max(Table1.date)
    et pôur la seconde (à tester):
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT Table1.Nom, Table1.date, DateDiff("m",[Table1].[date],Date()) AS NbMois FROM Table1 WHERE ((DateDiff("m",[Table1].[date],Date())>6))
    Michel

  3. #3
    Nouveau Candidat au Club
    Homme Profil pro
    Stagiaire
    Inscrit en
    Avril 2012
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Stagiaire
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Avril 2012
    Messages : 3
    Points : 1
    Points
    1
    Par défaut
    Oui super les deux marchent Merci beaucoup !
    Simple dernière question, après ce sera bon : Dans la seconde requête j'aimerai faire un group by pour n'avoir qu'une ligne par entreprise, du coup j'ai repris le group by de la première requête, et là il me sort une erreur :

    You tried to execute a query that does not include the specified expression 'Date de relance' as part of an aggregate function (Erreur 3122)

    Ça doit être trivial mais là je comprends pas... Une solution ?
    Merci encore !

  4. #4
    Membre actif Avatar de Flyoss
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2012
    Messages
    157
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Cher (Centre)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Mars 2012
    Messages : 157
    Points : 278
    Points
    278
    Par défaut
    Bonjour,
    Peux-tu nous coller ici ce que tu as créé comme requête?

  5. #5
    Nouveau Candidat au Club
    Homme Profil pro
    Stagiaire
    Inscrit en
    Avril 2012
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Stagiaire
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Avril 2012
    Messages : 3
    Points : 1
    Points
    1
    Par défaut
    Pas de problème, voici :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    SELECT Relances.Structure, Relances.[Date de relance], DateDiff("m",[Relances].[Date de Relance],Date()) AS NbMois
    FROM Relances
    WHERE (((DateDiff("m",[Relances].[Date de Relance],Date()))>6))
    GROUP BY Relances.Structure 
    ORDER BY Min(DateDiff("m",[Relances].[Date de Relance],Date()));

  6. #6
    Membre averti
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2008
    Messages
    286
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Finance

    Informations forums :
    Inscription : Février 2008
    Messages : 286
    Points : 383
    Points
    383
    Par défaut
    Peut-etre ceci ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT Table1.Nom, First(Table1.date) AS PremierDedate FROM Table1 WHERE (((DateDiff("m",Table1.date,Date()))>6)) GROUP BY Table1.Nom ORDER BY Table1.Nom, First(Table1.date) DESC
    Complément : ou alors cela ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT Table1.Nom, Last(Table1.date) AS DernierDedate FROM Table1 WHERE (((DateDiff("m",[Table1].[date],Date()))>6)) GROUP BY Table1.Nom ORDER BY Table1.Nom, Last(Table1.date) DESC
    Michel

Discussions similaires

  1. Réponses: 9
    Dernier message: 22/06/2011, 10h05
  2. Réponses: 2
    Dernier message: 04/07/2007, 20h33
  3. tableau descriptif de SQL server selon des critères techniq
    Par h.sofia dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 16/02/2006, 16h25
  4. Supprimer des sous-dossiers selon des critères
    Par Dertron dans le forum Autres Logiciels
    Réponses: 2
    Dernier message: 18/01/2006, 14h33
  5. lister des fichiers selon des critères
    Par Corben dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 12
    Dernier message: 18/10/2005, 16h52

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